gpt4 book ai didi

c++ - ld在使用Waf时找不到库,但在不使用Waf时可以

转载 作者:行者123 更新时间:2023-11-28 07:48:40 26 4
gpt4 key购买 nike

我正在尝试构建我的项目。我已经在 ./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 标志有关,但我'我不确定)?

最佳答案

指定库目录的完整路径使其工作:

stlib=['uv'],
stlibpath=[os.path.join(os.getcwd(), 'libuv')],

哦,链接器真是太糟糕了。

关于c++ - ld在使用Waf时找不到库,但在不使用Waf时可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com