У меня есть проект C, использующий несколько объектных файлов, которые необходимо связать в определенном порядке, чтобы найти все необходимые символы.
Например, эта команда отлично работает (lib2.o зависит от lib1.o и т. Д.)
gcc -o my_app main.o lib1.o lib2.o lib3.o -lm
но
gcc -o my_app main.o lib3.o lib2.o lib1.o -lm
заканчивается неопределенной ссылкой на ошибку my_variable.
Это известное поведение, и его можно решить, например, добавив эти объекты в раздел GROUP в скрипте компоновщика.
Теперь я хотел бы поделиться этим объектом как статической библиотекой со своими коллегами. Так...
ar -rcs mylib.a lib1.o lib2.o lib3.o
gcc -o my_app main.o mylib.a -lm
К сожалению, это приводит к таким же ошибкам неопределенных ссылок, как и при указании объектов в неправильном порядке.
Я не нашел никаких вариантов компоновщика или архиватора, чтобы заставить его работать, а также не нашел решения в Google, даже если я думаю, что эта проблема должна быть относительно распространенной.
Кто-нибудь знает решение?
С уважением Ян
nm -s mylib.a
- person askmish   schedule 03.08.2012