无法使用libtool将共享参数传递给g ++

问题描述 投票:0回答:2

我正在尝试使用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

成功创建了我的共享对象。我无法通过libtool将-shared参数传递给g ++。我该怎么做?

c++ gcc g++ libtool
2个回答
0
投票

向libtool添加-Xcompiler -shared有效。

/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 

这将运行带有-shared参数的g ++

 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

0
投票

您可以使用-Xcompiler <parameter>将参数直接传递给编译器。如您所知,-Xcompiler -shared适用于您的情况。

参考文档:https://www.gnu.org/software/libtool/manual/html_node/Compile-mode.html

© www.soinside.com 2019 - 2024. All rights reserved.