因为生成so的问题,发现libtool v2.4生成代码时:
详细的问题描述见:http://my.huhoo.net/archives/2011/08/libtool.html
libtool --debug --tag=CXX --mode=link g++ -fPIC -g -O2 -g -Wall -D_DEBUG -shared -fpic -o libsotest.so libsotest_so-testso.o -lpthread -ldl -lcppunit结果为:
g++ -fPIC -g -O2 -g -Wall -D_DEBUG -fpic -o libsotest.so libsotest_so-testso.o -lpthread -ldl -lcppunit而期望的结果应该是:
g++ -fPIC -g -O2 -g -Wall -D_DEBUG -shared -fpic -o libsotest.so libsotest_so-testso.o -lpthread -ldl -lcppunit低版本的libtool v1.5.22则没有这个问题,于是查找原因,经过分析,发现新版本的libtool对-shared选项有二处地方的变动,一处为func_mode_compile函数,主要是针对-shared的优化,
2429 -shared | -static | -prefer-pic | -prefer-non-pic)另外,在函数func_mode_link中
2430 later+=" $arg"
2431 continue
2432 ;;
6171 -shared)如果得到上面的期望结果,则注释这条语句即可。
6172 # The effects of -shared are defined in a previous loop.
6173 continue
6174 ;;
详细的问题描述见:http://my.huhoo.net/archives/2011/08/libtool.html