首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ld在使用Waf时找不到库,但在不使用Waf时可以找到库

ld在使用Waf时找不到库,但在不使用Waf时可以找到库
EN

Stack Overflow用户
提问于 2013-01-14 08:26:41
回答 1查看 1.1K关注 0票数 0

我正在尝试构建我的项目。我已经在./libuv中将libuv编译为libuv.a (因此,库的相对路径是./libuv/libuv.a)。

当我直接使用clang时,它起作用了:

代码语言:javascript
复制
$ clang++ src/**/*.cpp -std=c++11 -L./libuv -luv -I./libuv/include -I./include

然而,当我使用Waf构建时,我得到了一个链接器错误,表明ld找不到libuv:

代码语言:javascript
复制
$ 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相当简单:

代码语言:javascript
复制
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']
    )

为什么我找不到通过网站管家调用的库,而不使用网站管家时一切正常(我怀疑这与-Wl,-Bstatic标志有关,但我不确定)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-14 09:13:58

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

代码语言:javascript
复制
stlib=['uv'],
stlibpath=[os.path.join(os.getcwd(), 'libuv')],

哦,链接器是如此糟糕的程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14309888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档