Использование библиотечных файлов в Linux
Я пытаюсь использовать некоторые функции, которые находятся в /lib/libproc-3.2.6.so
библиотека в моем дистрибутиве Ubuntu.
Я скачал и установил заголовочные файлы, и они определены в моих исходных файлах.
В настоящее время это все, что я пытаюсь сделать, просто для начала...
proc_t **read_proc = readproctab(0);
Но я получаю следующую ошибку компилятора:
/tmp/cclqMImG.o: In function `Sysmon::initialise_sysmon()':
sysmon.cpp:(.text+0x494): undefined reference to `readproctab'
collect2: ld returned 1 exit status
Я знаю, что, возможно, я делаю что-то не так с командой, которую использую для ее компиляции, но из-за недостатка опыта я не уверен, что делаю неправильно. Это команда g++, которую я использую для компиляции моего файла cpp:
g++ -o sysmon.o sysmon.cpp `pkg-config --libs --cflags gtk+-2.0`
Может кто-нибудь дать мне несколько советов о том, где я иду не так.
3 ответа
Вы не связываете свой исполняемый файл с libproc (это сообщение об ошибке компоновщика).
Попробуйте добавить -lproc
к команде компоновщика.
Ubuntu 17.04
Вы, вероятно, хотите использовать -lprocps
вместо -lproc
,
Вы на самом деле не ссылаетесь на библиотеку, которую хотите использовать, вы просто включаете ее заголовочные файлы, поэтому компилятор будет жаловаться на неопределенные ссылки.
Вы можете прочитать о связывании с общими библиотеками здесь.
Небольшое предложение: начните использовать инструмент сборки SCons, он может позаботиться о ссылках на библиотеки для вас, просто добавьте те, которые вы хотите использовать, в файл SConstruct, требуемый SCons, и тогда вам не придется возиться со спецификой компилятора, Вы также получаете много других хороших вещей, которые предоставляют SCons. Настоятельно рекомендуется.