Я установил libcurl, используя: sudo apt-get install libcurl4-openssl-dev
. Когда я пытаюсь скомпилировать свою программу, я читаю, что мы должны передать, где libcurl находится в компиляторе GCC (хотя для меня он расположен в / usr / include). Следовательно, в соответствии с http://ubuntuforums.org/showthread.php?t=1175115 я скомпилировал его, используя
gcc myfile.c $(pkg-config --libs --cflags libcurl) -o myprogram
, но если я только введу pkg-config --cflags libcurl
, он ничего не печатает (только пустое пространство). Программа компилируется правильно, если я добавлю флаг и --libs
. Я только не понимаю, почему pkg-config --cflags libcurl
ничего не возвращает)
--cflags
предназначен для предоставления вам любых флагов препроцессора или компиляции , требуемых для пакетов / библиотек в командной строке; вы получаете пустое место, потому что нет таких обязательных флагов для libcurl ; это совершенно нормально. Что такое команда, которая ничего не печатает?
У вас есть pkg-config --libs --cflags libcurl
в $()
в вашей команде gcc
, и вы говорите, что она работает. Но вы упомянули команду pkg-config
, которую вы запускаете, чтобы увидеть результат как pkg-config --cflags libcurl
без --libs
.
Возможно ли, что вы просто запускаете другую команду внутри $()
в команде gcc
, поскольку вы отдельно проверяете вывод?
Чтобы уточнить, пока страница руководства немного сбивает с толку Фактическое поведение двух команд отличается . Это из моей машины Ubuntu 11.10 amd64 с установленным libcurl4-openssl-dev
:
ek@Apok:~$ pkg-config --libs --cflags libcurl
-lcurl
ek@Apok:~$ pkg-config --cflags libcurl
ek@Apok:~$