2011-01-26 6 views
1

Итак, потратив пару часов ручной настройки autotools, мне наконец-то удалось создать make-файл для моего проекта. Только проблема? Это создает проблемы с компоновщиком.Проблема с automake и linking

Позвольте мне объяснить это лучше: у меня есть проект, который разделен на несколько подпрограмм, все из которых должны быть связаны с основной программой main.c. Моя проблема в том, что, хотя я могу скомпилировать все правильно с помощью gcc, make дает мне страшный collect2: ld возвратил 1 ошибку статуса выхода, назвав неопределенную ссылку на главную причину. Теперь все мы знаем, что это ошибка связи, и в качестве доказательства этого я могу скомпилировать все файлы, не связывая их с добавлением -c среди CFLAGS в Makefile.am. Но мы это уже знали.

Мой вопрос: что я должен добавить в файл Makefile.am (тот, который находится внутри моего файла src, я думаю?), Чтобы он мог связывать все файлы друг с другом, а не отдельно, так что компоновщик найдет точку входа в main.o? В принципе, эквивалент запуска «gcc program1.c program2.c main.c». Я знаю, что automake делает это, потому что он постепенно наращивает файлы, по одному в то время, и я знаю, что это глупый вопрос, но в любом случае это сводит меня с ума. Это первый раз, когда я использую autotools, помогите мне сделать это не последним!

ответ

2

Если foo это имя вашей программы, и вы ничего сверхъестественного не делает,

bin_PROGRAMS = foo 
foo_SOURCES = program1.c program2.c main.c 
foo_LDADD = # any other libraries go here as -l arguments 

должен быть достаточным Makefile.am.

+0

Все, спасибо! – Charles

 Смежные вопросы

  • Нет связанных вопросов^_^