порядок объектных файлов в статической библиотеке - PullRequest
4 голосов
/ 30 декабря 2011

Я знаю, что при связывании с несколькими статическими библиотеками или объектными файлами порядок имеет значение (зависимые библиотеки должны быть перечислены до их зависимостей). Я хочу знать, если при создании файла библиотеки с ar применяется то же правило, и порядок в библиотеке имеет значение, или в том же файле .a это не имеет значения.
Я упаковываю более 200 объектных файлов со сложным графом зависимостей и делаю

ar rcs mylib.a objs/*.o

значительно проще, чем перечислять их в правильном порядке.

Я использую gcc, если это имеет значение.

1 Ответ

6 голосов
/ 30 декабря 2011

Порядок в библиотеке давным-давно имел значение .

Это больше не имеет значения в любой системе UNIX более новой, чем ~ 15-20 лет. От man ranlib:

   An archive with such an index speeds up linking to the library
   and allows routines in the library to call each other without
   regard to their placement in the archive.

Большинство не древних систем UNIX либо генерируют __.SYMDEF (который содержит вышеуказанный индекс) автоматически при сборке архивной библиотеки, либо создают ее в памяти во время соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...