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`