Boost 使用SCON生成时如何处理此错误?

Boost 使用SCON生成时如何处理此错误?,boost,scons,Boost,Scons,/usr/bin/ld:build/bsp_src/main.o:未定义的第一个引用符号««ZN5boost6system15system_categoryEv» //usr/lib/i386 linux gnu/libboost_system.so.1.54.0:添加符号时出错:命令行中缺少DSO 我正在尝试构建此项目,但没有足够的SCON过期时间根据您问题中引用的SConstruct文件,您在boost\u系统库中的链接不正确。您的操作如下所示: env.Append( CCFLAGS =

/usr/bin/ld:build/bsp_src/main.o:未定义的第一个引用符号««ZN5boost6system15system_categoryEv»

//usr/lib/i386 linux gnu/libboost_system.so.1.54.0:添加符号时出错:命令行中缺少DSO


我正在尝试构建此项目,但没有足够的SCON过期时间

根据您问题中引用的
SConstruct
文件,您在boost\u系统库中的链接不正确。您的操作如下所示:

env.Append( CCFLAGS = [ '-g', '-lboost_system', ] )
env.Append( LIBS = ['boost_system'] )
env.Append( LIBPATH = '/put/the/path/here' )
应使用
CCFLAGS
变量将编译标志传递给编译器。
-l
标志应该传递给链接器,而不是编译器。在SCON中执行此操作的正确方法如下:

env.Append( CCFLAGS = [ '-g', '-lboost_system', ] )
env.Append( LIBS = ['boost_system'] )
env.Append( LIBPATH = '/put/the/path/here' )
注意,我没有添加
-l
标志,因为
SCons
以独立于平台的方式为您这样做

您可能还必须定义库的路径,具体操作如下:

env.Append( CCFLAGS = [ '-g', '-lboost_system', ] )
env.Append( LIBS = ['boost_system'] )
env.Append( LIBPATH = '/put/the/path/here' )
LIBS
一样,您不需要将
-L
标志添加到
LIBPATH
,因为
SCons
将添加它


下面是一个完整的库列表。

您可以向链接器输入添加一个新库,该库在命令行的其余部分中命名。隐式/间接依赖关系不好(不再是了?我认为这是大约3年前的一个变化)