2009-06-19 6 views
2

Я хочу создать общую библиотеку из нескольких статической LIBS с использованием GCC под OS X.GCC Как экспортировать функцию из статической библиотеки

В некотором статическом LIBS, нет никакого кода в общей библиотеке называет это, я просто хочу для экспорта символов в эти статические библиотеки. Это работает в режиме отладки, но не находится в режиме деблокирования (особенно, когда я включаю чередование мертвого кода). Я могу понять причину, gcc считает, что эти функции в статических библиотеках никогда не используются. но как я могу заставить gcc включить эти символы?

Я уже пробовал добавить параметр -u для загрузчика, но он генерирует только «локальный» символ. как заставить компоновщик генерировать символ экспорта?

Кроме того, мне интересно, если есть способ, чтобы добавить директивы компоновщика в исходном коде, так же, как MSVC #pragrma comment(linker, "/INCLUDE:xxxx")

функцию I, определенных в статическом Lib, как:

extern "C" 
void test() {} 

Спасибо заранее! -Jonny

ответ

0

Используйте ar, чтобы разобрать статические библиотеки в их составные объектные файлы. Затем соедините эти объекты вместе, чтобы создать общую библиотеку.

 
ar -x libstatic.a 
(produces a bunch of *.o files) 
gcc -shared -olibshared.so *.o # Linux 
ld -dylib -olibshared.dylib *.o # Mac OSX