pkg-config --libs возвращает файл.la, но g++ не может его обработать

Я пытаюсь построить что-то против GStreamer из git. У них есть магический процесс, который делает pkg-config счастлив, но если я запустлю его, я получу .la файл:

$ pkg-config --libs gstreamer-1.0
/home/blong/gst/head/gstreamer/gst/libgstreamer-1.0.la -lgobject-2.0 -lglib-2.0

И это вызывает проблемы для GCC:

g++ -o example switchtrackexample.cpp `pkg-config --libs --cflags gstreamer-1.0`
# comes out as: g++ -o example switchtrackexample.cpp -pthread -I/home/blong/gst/head/gstreamer -I/home/blong/gst/head/gstreamer/libs -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include /home/blong/gst/head/gstreamer/gst/libgstreamer-1.0.la -lgobject-2.0 -lglib-2.0
/usr/bin/ld: error: /home/blong/gst/head/gstreamer/gst/libgstreamer-1.0.la:8:8: invalid character
/usr/bin/ld: error: /home/blong/gst/head/gstreamer/gst/libgstreamer-1.0.la:8:8: syntax error, unexpected $end
/usr/bin/ld: error: /home/blong/gst/head/gstreamer/gst/libgstreamer-1.0.la: not an object or archive
# lots of undefined references here

Я прочитал некоторые вещи, предлагающие мне использовать libtool чтобы скомпилировать это, но я не могу понять, как. Что я должен делать с этим .la файл?

1 ответ

Похоже, сразу после того, как я спросил это, я нашел ответ Жюльена Мутта:

Добавлять:
libtool --mode = ссылка
перед вашей командой сборки.

Следуя этому совету, я получаю следующее:

libtool --mode=link g++ -o example switchtrackexample.cpp `pkg-config --cflags --libs gstreamer-1.0`
Другие вопросы по тегам