РЕДАКТИРОВАТЬ: Я полагаю, я должен уточнить, если это имеет значение. Я использую AIX Unix, поэтому я использую компиляторы VAC, а не компиляторы GNU.
Конец редактирования
<ч />
Я довольно ржавый в C / C ++, так что простите, если это простой вопрос.
Я бы хотел взять общие функции из нескольких моих программ на C и поместить их в общие библиотеки или общие объекты. Если бы я делал это в Perl, я бы поместил свои сабвуферы в модуль Perl и использовал этот модуль при необходимости.
Для примера, скажем, у меня есть эта функция:
int giveInteger()
{
return 1034;
}
Очевидно, что это не реальный пример, но если бы я хотел поделиться этой функцией, как бы я поступил?
Я почти уверен, что у меня есть 2 варианта:
- Поместите мою разделяемую функцию в файл и сделайте так, чтобы она компилировалась с моей основной программой во время компиляции. Если я когда-нибудь внесу изменения в свою общую функцию, мне придется перекомпилировать основную программу.
- Поместите мою разделяемую функцию в файл и скомпилируйте ее как разделяемую библиотеку (если у меня правильные условия), и моя основная программа ссылается на эту разделяемую библиотеку. Любые изменения, которые я делаю в моей общей библиотеке (после ее компиляции), будут интегрированы в мою основную программу во время выполнения без перекомпиляции моей основной программы.
Правильно ли я считаю?
Если так, как я могу выполнить один или оба этих метода? Я много искал, и мне кажется, что я нашел информацию о том, как у меня есть своя собственная программа, связывающаяся с чужой общей библиотекой, но не о том, как создавать свои собственные общие функции и компилировать их так, чтобы я мог использовать их в своей собственной программе .
Большое спасибо!
Brian
<ч />
РЕДАКТИРОВАТЬ:
Заключение
Спасибо всем за вашу помощь! Я подумал, что добавлю в этот пост то, что работает для меня (для динамических разделяемых библиотек в AIX), чтобы другие могли извлечь выгоду:
Я компилирую свои общие функции:
xlc -c sharedFunctions.c -o sharedFunctions.o
Затем сделайте его общим объектом:
xlc -qmkshrobj -qexpfile=exportlist sharedFunctions.o
xlc -G -o libsharedFunctions.so sharedFunctions.o -bE:exportlist
Затем свяжите его с другой программой:
xlc -brtl -o mainProgram mainProgram.c -L. -lsharedFunctions
И еще один комментарий помог мне найти эту ссылку, которая также помогла:
http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/topic/com.ibm.vacpp7a.doc/proguide/ref/compile_library.htm
Еще раз спасибо всем, кто помог мне!