【发布时间】:2019-10-17 15:08:30
【问题描述】:
我正在尝试使用 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++。我怎样才能做到这一点?
【问题讨论】: