我正在尝试建立我的项目。我已经将libuv编译./libuv为libuv.a(因此库的相对路径为./libuv/libuv.a)。
当我直接使用clang时,它可以工作:
$ clang++ src/**/*.cpp -std=c++11 -L./libuv -luv -I./libuv/include -I./include
但是,当我使用Waf进行构建时,出现链接器错误,指示ld无法找到libuv:
$ CXX=clang++ ./waf configure && ./waf build ... [2/2] cxxprogram: build/src/uv/loop.cpp.1.o -> build/a.out /usr/bin/ld.gold: error: cannot find -luv ... Build failed -> task in 'a.out' failed (exit status 1): {task 140349441167440: cxxprogram loop.cpp.1.o -> a.out} ['clang++', 'src/uv/loop.cpp.1.o', '-o', '~/sf/build/a.out', '-Wl,-Bstatic', '-Llibuv', '-luv', '-Wl,-Bdynamic']
我的wscript很简单:
def options(opt): opt.load('compiler_cxx') def configure(conf): conf.load('compiler_cxx') def build(bld): bld.program( source=bld.path.ant_glob('src/**/*.cpp'), target='a.out', includes=['include', 'libuv/include'], stlibpath=['libuv'], stlib=['uv'], cxxflags=['-std=c++11'] )
为什么通过Waf调用时ld无法找到库,而在不使用Waf时一切正常(我怀疑它与-Wl,-Bstatic标志有关,但我不确定)?