Произошла ошибка ссылки gcc - PullRequest
0 голосов
/ 22 июня 2009

я скомпилировал с gcc

gcc -l. 'net-snmp-config --cflags' -fPlC -shared -c -o matsu_object.o tsu_object.c

но эта ошибка произошла

gcc: -lcrypto: потому что ссылка была не завершено, входной файл компоновщик не использовался

Что не так?

Ответы [ 3 ]

3 голосов
/ 22 июня 2009

Вы неправильно набрали вопрос? Для этого нет способа вывести сообщение, которое вы пишете, и я ожидаю, что правильная команда будет похожа на

gcc -L. `net-snmp-config --cflags` -fPIC -shared -c -o matsu_object.o tsu_object.c

Обратите внимание на прописные буквы -L, обратные кавычки вместо одинарных кавычек и прописные буквы I в PIC.

Кроме того, вы не говорите, что пытаетесь сделать, но net-snmp-config также должен принимать хотя бы один из --libs или --agent-libs.


Ах, я недостаточно внимательно прочитал ...

-c означает «компилировать», то есть: генерировать из tsu_object.c, скомпилированный matsu_object.o.

Без -c компилятор фактически связывается, то есть генерирует из *.o, a.out или другого указанного файла.

-shared (и флаги компоновщика, такие как -l и -L) имеют смысл только при связывании. Они бессмысленны при компиляции, как вы делаете здесь из-за -c.

Пожалуйста, исправьте командную строку в вопросе, чтобы точно отразить то, что вы используете, и дайте больше объяснения относительно того, что вы пытаетесь сделать.

1 голос
/ 22 июня 2009

Я думаю, что вы используете тики вместо обратных тиков. Действительно ли --cflags дает опции компоновщика? Я думаю, что вы находитесь на шаге связи здесь. Также, каков эффект -c на ссылку. Я думал, что -c был только для компиляции и не пытался связать.

0 голосов
/ 22 июня 2009

Вы использовали одинарные кавычки вместо обратных кавычек.

Вместо этого:

gcc -l. 'net-snmp-config --cflags' -fPlC -shared -c -o matsu_object.o tsu_object.c

Вы должны набрать:

gcc -l. `net-snmp-config --cflags`-fPlC -shared -c -o matsu_object.o tsu_object.c

net-snmp-config - это программа. Когда вы запускаете его с --cflags, он оценивает правильные cflags, которые вы должны использовать для компиляции вашей программы.

Но знаете что? Вы должны использовать autoconf. Даже для чего-то такого маленького обычно имеет смысл делать работу. Большинству людей, которых я знаю, нужно компилировать на нескольких платформах ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...