Предположим, у меня есть статическая библиотека libx.a. Как мне сделать некоторые символы (не все) из этой библиотеки, чтобы быть всегда присутствует в любом бинарном я ссылку с моей библиотекой? Причина в том, что мне нужны эти символы для доступа через dlopen + dlsym. Я знаю, что-быще-архивный компоновщик, но он заставляет все объектные файлы из архива библиотеки связываться в получающийся двоичный файл, и это не то, что я хочу ...как всегда включать символы из статической библиотеки?
Наблюдения до сих пор (CentOS 5.4, 32bit) (обн: этот пункт не так, я не мог воспроизвести это поведение)
ld main.o libx.a
счастливо раздеть все не ссылки символов, в то время как
ld main.o -L. -lx
соединит всю библиотеку, я думаю. это зависит от версии binu однако новые линкеры смогут выбирать отдельные объекты из статической библиотеки.
Другой вопрос: как я могу добиться такого же эффекта под Windows?
Заранее спасибо. Любые подсказки будут высоко оценены.
, кажется, самый простой и практичный путь к цели, но я считаю, что OP хочет более элегантного решения :) –
@MottiShneor: Простой и практичный * - элегантный. ;-) Боже, это должно быть одно из моих * самых старых сообщений * SO ... :-D – DevSolar
Я думаю, для этого должен быть флаг компоновщика, что-то вроде -все-архив или тому подобное. Я пришел к этому вопросу и ответу, потому что теперь у меня противоположная проблема. Мои статические символы lib просто не будут «проходить» мою Xcode Framework (что является своего рода dylib), и я не могу понять, почему. –