Использование библиотечных файлов в 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. Настоятельно рекомендуется.

Другие вопросы по тегам