【问题标题】:How to deal with this error when build with Scons?使用 Scons 构建时如何处理此错误?
【发布时间】:2014-11-02 14:19:04
【问题描述】:

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

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

SConstruct file

我正在尝试构建这个项目https://github.com/TTimo/es_core,并且没有足够的 scons 经验

【问题讨论】:

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

标签: boost scons


【解决方案1】:

根据您的问题中引用的SConstruct 文件,您在 boost_system 库中的链接不正确。你这样做如下:

env.Append( CCFLAGS = [ '-g', '-lboost_system', ] )

CCFLAGS 变量应该用于将编译标志传递给编译器。 -l 标志应该传递给链接器,而不是编译器。在 SCons 中正确的做法如下:

env.Append( LIBS = ['boost_system'] )

注意,我没有添加 -l 标志,因为 SCons 以独立于平台的方式为您添加。

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

env.Append( LIBPATH = '/put/the/path/here' )

LIBS 一样,您不需要将-L 标志添加到LIBPATH,因为SCons 会添加它。

这是SCons Construction Variables的完整列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 2016-03-19
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    相关资源
    最近更新 更多