scons如何在构建ndk项目中设置链接顺序

时间:2015-02-07 06:34:07

标签: c++ android-ndk cross-platform scons

我创建一个ndk项目使用STL静态库, 但是当我构建elf时,编译器告诉错误:未定义引用' std :: ios_base :: Init :: Init()'等。

我发现当scons构建elf时它会在a.o之前传递stlport.a以便导致问题

那我如何修改SConstruct以将stlport.a放在a.o之后?

1 个答案:

答案 0 :(得分:0)

默认链接命令由环境变量LINKCOM / SHLINKCOM定义为:

env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS'

(如果您愿意,请在"打印env.Dump()"在您的某个SConscripts中查看) 您可以重新定义它,并在源之后放置LINKFLAGS

env['LINKCOM'] = '$LINK -o $TARGET $__RPATH $SOURCES $LINKFLAGS $_LIBDIRFLAGS $_LIBFLAGS'

或者将静态库附加到LIBFLAGS变量:

env.Append(LIBFLAGS=['path_of_static_lib_at_end.a'])