Автоматически включая несколько исходных файлов с -gcc?

0

Я создал некоторые полезные служебные функции в C, которые я хочу использовать в своих программах. Все они находятся в папке.. /lib. У меня есть файл заголовка, который содержит прототипы функций, которые я включаю с помощью "#include"../lib/library.h ". Однако при компиляции с gcc я также должен предоставить имена файлов C, содержащих определения функций.

Сейчас в папке.. /lib есть только 3 файла C, но со временем это может расти. Есть ли способ автоматически сообщать gcc о включении всех этих файлов (включая мой файл main.c) при компиляции моей программы?

Теги:
gcc

1 ответ

1
Лучший ответ

Создайте библиотеку. Если вы находитесь в Linux, вам нужно выбрать, хотите ли вы статическую библиотеку или общую библиотеку. Статические библиотеки создаются с использованием команды архивирования в Linux. Google для "ar".

ar cr libtest.a test1.o test2.o

Теперь вы можете связываться с этим архивом с помощью опции -ltest (ltest - сокращенная версия libtest, которую вы создали) с помощью gcc или g++. Если ваш код имеет только код C, используйте gcc. Если у него есть C и C++, используйте g++.

Как и в файлах заголовков, компоновщик ищет библиотеки в некоторых стандартных местах, включая каталоги /lib и /usr/lib, которые содержат стандартные системные библиотеки. Если вы хотите, чтобы компоновщик также искал другие каталоги, вы должны использовать опцию -L, которая является параллелью опции -I для файлов заголовков. Вы можете использовать эту строку, чтобы дать ссылку компоновщику искать библиотеки в /usr/local/lib/MyTest, прежде чем смотреть в обычные места:

g++ -o reciprocal main.o reciprocal.o -L/usr/local/lib/MyTest -ltest

Хотя вам не нужно использовать опцию -I, чтобы заставить препроцессор искать текущий каталог (для поиска файла заголовка), вам нужно использовать параметр -L, чтобы заставить компоновщик искать текущий каталог. В частности, вы можете использовать следующее, чтобы дать ссылку компоновщику найти тестовую библиотеку в текущем каталоге:

gcc -o app app.o -L. -ltest

Процесс создания общей библиотеки также схож. Как только вы получите его, вы можете позаботиться о компиляции и связывании через make файл.

(Часть этой статьи взята из: Advanced Linux Programming, ссылка: http://www.cse.hcmut.edu.vn/~hungnq/courses/nap/alp.pdf)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню