c++,链接时出错.建筑与scons

C++, error while linking. Building with scons

本文关键字:建筑 scons 出错 链接 c++      更新时间:2023-10-16

我试着用scons运行构建示例Wt项目,但几个小时我卡住了。当我用命令

编译它时:
g++ -o hello hello.cc -I/usr/local/include -L/usr/local/lib
  -lwthttp -lwt -lboost_random -lboost_regex
  -lboost_signals -lboost_system -lboost_thread -lboost_filesystem
  -lboost_program_options -lboost_date_time

(链接到教程:http://www.webtoolkit.eu/wt/doc/tutorial/wt.html#_hangman)一切正常,我可以运行这个简单的例子了。但是对于我的scons文件:

env = Environment()
#       Add header search path
env.Append(CPPPATH = ['/usr/include', '/usr/local/include'])
#       Add compile-time flags
env.Append(CCFLAGS=[
#'-Wall','-g',
'-lwt', '-lwthttp',
'-lboost_random', '-lboost_regex', '-lboost_signals',
'-lboost_system', '-lboost_thread', '-lboost_filesystem',
'-lboost_program_options', '-lboost_date_time'
])
#       Add library search path
env.Append(LIBPATH = ['/usr/lib','/usr/local/lib', '/opt/lib'])
env.Program('hello',['exa.cc'])
#Program('exa.cc')
~                                        

我不能,得到以下错误:http://pastebin.com/Ft2b62ie。谢谢你的回答。

卢卡斯。

下面的SConstruct应该可以为你工作:唯一的区别是将库放在LIBS SCons构造变量中,并从每个库中删除'-l',因为在SCons中不需要。

(注意,这个答案与user2093113基本相同,但是正确指定了库:https://stackoverflow.com/a/16555400/1158895)

env = Environment()
#       Add header search path
env.Append(CPPPATH = ['/usr/include', '/usr/local/include'])
#       Add compile-time flags
#env.Append(CCFLAGS=['-Wall','-g'])
# libraries to link against
# Notice you dont need the '-l', since SCons is platform independent
env.Append(LIBS=[
  'wt', 'wthttp',
  'boost_random', 'boost_regex', 'boost_signals',
  'boost_system', 'boost_thread', 'boost_filesystem',
  'boost_program_options', 'boost_date_time'
])
#       Add library search path
env.Append(LIBPATH = ['/usr/lib','/usr/local/lib', '/opt/lib'])
# Compile and link the binary
env.Program('hello',['exa.cc'])

你的链接标志不应该附加到CCFLAGS,而应该附加到LIBS

env.Append(LIBS=[
'-lwt', '-lwthttp',
'-lboost_random', '-lboost_regex', '-lboost_signals',
'-lboost_system', '-lboost_thread', '-lboost_filesystem',
'-lboost_program_options', '-lboost_date_time'
])