我需要执行类似于:
的构建命令g++ -Wl,-rpath=../libs source.o -static -Wl,-Bdynamic -ldynlib -Wl,-Bstatic -lstaticlib
我当前(错误的)SConscript在dynlib中用这一行链接:
env.AppendUnique(LINKFLAGS=['-Wl,-Bdynamic', '-ldynlib']);
然而,当我运行scons时,我得到了这个:
g++ -Wl,-rpath=../libs -static -Wl,-Bdynamic -ldynlib source.o -Wl,-Bstatic -lstaticlib
因为source.o在dynlib之后,所以找不到dynlib,这会导致链接错误。解决方案(手动验证)是在dynlib之前移动source.o,dynlib是供应商提供的库。
理想情况下,我会将dynlib添加到LIBS,但SCons似乎不支持那里的标记。
我可以使用哪些解决方法让SCons生成正确的构建线?
答案 0 :(得分:0)
Literal原来是解决方案。无论出于何种原因,SCons都不会在前面添加' -l'现在我的旗帜。
env['FORCEDYNAMIC'] = env.Literal('-Wl,-Bdynamic')
env.PrependUnique(LIBS = [['${FORCEDYNAMIC}', 'dynlib']])