Невозможно передать -shared аргумент в g ​​++ с помощью libtool - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь скомпилировать общий объект с помощью libtool.

Когда я запускаю команду libtool следующим образом:

g++ -g -O2 -fPIC -Wl,--rpath -Wl,/opt/labris/lib/labris-lupd -o simple_text.so SimpleTextPlugin.o SimpleTextAdaptor.o SimpleTextVersionController.o FileHash.o FDiff.o FPatch.o  -L/opt/labris/lib/labris-lupd /opt/labris/lib/labris-lupd/liblupdutils.so /opt/labris/lib/labris-lupd/liblupdipc.so -lssl -Wl,-rpath -Wl,/opt/labris/lib/labris-lupd -Wl,-rpath -Wl,/opt/labris/lib/labris-lupd

Она вызывает g ++ следующим образом:

libtool: link: g++ -g -O2 -fPIC -Wl,--rpath -Wl,/opt/labris/lib/labris-lupd -o simple_text.so SimpleTextPlugin.o SimpleTextAdaptor.o SimpleTextVersionController.o FileHash.o FDiff.o FPatch.o  -L/opt/labris/lib/labris-lupd /opt/labris/lib/labris-lupd/liblupdutils.so /opt/labris/lib/labris-lupd/liblupdipc.so -lssl -Wl,-rpath -Wl,/opt/labris/lib/labris-lupd -Wl,-rpath -Wl,/opt/labris/lib/labris-lupd

Это приводит к следующей ошибке:

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

Однако, когда я вызываю g ++ следующим образом (обратите внимание на опцию -shared в конце):

g++ -g -O2 -fPIC -Wl,--rpath -Wl,/opt/labris/lib/labris-lupd -o simple_text.so SimpleTextPlugin.o SimpleTextAdaptor.o SimpleTextVersionController.o FileHash.o FDiff.o FPatch.o  -L/opt/labris/lib/labris-lupd /opt/labris/lib/labris-lupd/liblupdutils.so /opt/labris/lib/labris-lupd/liblupdipc.so -lssl -Wl,-rpath -Wl,/opt/labris/lib/labris-lupd -Wl,-rpath -Wl,/opt/labris/lib/labris-lupd -shared

Мой общий объект успешно создан. Я не смог передать аргумент -shared в g ++ через libtool. Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Вы можете использовать -Xcompiler <parameter> для прямой передачи параметров в компилятор. Как вы уже узнали, -Xcompiler -shared будет работать над вашим делом.

Справочный документ: https://www.gnu.org/software/libtool/manual/html_node/Compile-mode.html

0 голосов
/ 18 октября 2019

Добавление -Xcompiler -shared в libtool сработало.

/usr/bin/libtool --tag=CXX --mode=link g++ -g -O2 -fPIC -Wl,--rpath -Wl,/opt/labris/lib/labris-lupd -L/opt/labris/lib/labris-lupd -Xcompiler -shared  -o simple_text.so SimpleTextPlugin.o SimpleTextAdaptor.o SimpleTextVersionController.o FileHash.o FDiff.o FPatch.o -lssl -llupdutils -llupdipc 

Это запускает g ++ с -shared аргументом

 g++ -g -O2 -fPIC -Wl,--rpath -Wl,/opt/labris/lib/labris-lupd -shared -o simple_text.so SimpleTextPlugin.o SimpleTextAdaptor.o SimpleTextVersionController.o FileHash.o FDiff.o FPatch.o  -L/opt/labris/lib/labris-lupd /opt/labris/lib/labris-lupd/liblupdutils.so /opt/labris/lib/labris-lupd/liblupdipc.so -lssl -Wl,-rpath -Wl,/opt/labris/lib/labris-lupd -Wl,-rpath -Wl,/opt/labris/lib/labris-lupd
...