2015-06-08 4 views
-2

Я создал статическую библиотеку, используя команду ar после создания объекта, используя gcc -o file.o -c file.c.сборка статической библиотеки gcc

Теперь я пытаюсь использовать GCC, чтобы связать эту библиотеку в компиляции с помощью команды, подобной этой

gcc -I /PathInclude -L /PathStaticLib -lm \ 
    -std=c99 -o file file.o -lstatic_library_name 

с static_library_name я имею в виду, что файл с именем

libstatic_library_name.a 

С структура файлов довольно сложная (потому что в основном в компиляции я также заменяю некоторое определение макроса и т. д.), я не публикую весь код, есть ли у вас какие-либо мысли о том, что происходит? если не какая информация я могу вам предоставить, чтобы помочь мне?

PS. там не много файлов o, но внутренняя структура немного сложна для объяснения в нескольких словах, поэтому ... дайте мне знать, что вам нужно.

Я могу предоставить вам содержимое файла make, если вам нужно, не сложно.

PS. Команда ...

gcc -I../CModels -L../CModels/ -std=c99 -o ref_approx_bs3_log2_4_4_1ulp_arch1 
ref_approx_bs3_log2_4_4_1ulp_arch1.o -lm -lmy_float 

ошибка

ref_approx_bs3_log2_4_4_1ulp_arch1.o: In function `cogen_fp_bs3_log2_4_4_1ulp_arch1': 
ref_approx_log2.c:(.text+0x2229): undefined reference to `cast' 
ref_approx_log2.c:(.text+0x22d0): undefined reference to `cast' 
ref_approx_log2.c:(.text+0x22f7): undefined reference to `cast' 
ref_approx_log2.c:(.text+0x232e): undefined reference to `sumFP' 
ref_approx_log2.c:(.text+0x2350): undefined reference to `diffFP' 
ref_approx_log2.c:(.text+0x2375): undefined reference to `mulFP' 
ref_approx_log2.c:(.text+0x239c): undefined reference to `sumFP' 
collect2: ld returned 1 exit status 

Использование

nm my_float.a 

выход

my_float.o: 
0000000000000ca8 T _Z11castToFixedyPyyyy 
0000000000000a0c T _Z12splitIntFracyPyS_yy 
0000000000000324 T _Z28rightShift_and_round2NearestyyPyyy 
000000000000005c T _Z3ldzy 
0000000000000132 T _Z3mulyyy 
000000000000048a T _Z4castyPyyyyy 
0000000000000000 T _Z4maxuyy 
000000000000002e T _Z4minuyy 
00000000000014dc T _Z5mulFPyyPyyy 
0000000000000cc2 T _Z5sumFPyyPyyy 
000000000000147a T _Z6diffFPyyPyyy 
0000000000000300 T _Z9ldzFormatyy 
       U __gxx_personality_v0 

Так я предполагаю, что библиотека .а нормально ...

+0

Я не вижу здесь проблемы или вопроса. – larsks

+0

Прошу прощения ... проблема в том, что даже если я включаю статическую библиотеку, которую я создал, компилятор выплюнул классическую ошибку «неопределенная ссылка». Но я не понимаю, почему ... в этом проблема. – user8469759

+0

Обновите свой вопрос, чтобы включить (a) фактическую командную строку, которую вы используете для создания вещей, и (b) фактический текст сообщения об ошибке. Это позволит нам задавать более полезные вопросы. – larsks

ответ

0

В соответствии с gcc manual, AFAIR, не должно быть никакого пространства между -L или -I и в path. Измените свою команду на

.. -I/PathInclude -L/PathStaticLib ... 
+0

Добавлена ​​команда вверх, но это не так 't work – user8469759

+1

также, почему '-lm' находится перед объектным файлом? Переместите это до последнего. –

+0

@ Lukkio также, вы уверены, что библиотека 'my_float' в порядке? –

0

Ошибка говорит о том, что ссылки на литые, sumFP, diffFP, mulFP не определены. Необходимо убедиться, что они определены в библиотеке.