-
-
Notifications
You must be signed in to change notification settings - Fork 784
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add_rpathdirs对shared库不生效 #208
Comments
xmake version 2.2.1 |
如果是shared动态库target,通过add_deps添加的时候,就会自动继承和添加对应的rpath设置,一般不必自己手动添加rpath,例如: target("test")
set_kind("shared")
add_files("src/interface.c")
target("demo")
set_kind("binary")
add_deps("test")
add_files("src/test.c") 上述例子,demo程序通过add_deps可自动添加rpath,加载test动态库。 g++ -o build/release/x86_64/test_demo build/.objs/test_demo/release/x86_64/src/test.c.o -Lbuild/release/x86_64 -Wl,-rpath=$ORIGIN -s -fvisibility=hidden -ltest -m64 -L/usr/local/lib -L/usr/lib 你可以通过 另外即时自带的rpath设置,不满足需求,通过add_rpathdirs添加其他路径也是ok,我这边测试可以: target("test")
set_kind("shared")
add_files("src/interface.c")
target("demo")
set_kind("binary")
add_deps("test")
add_rpathdirs("/tmp")
add_files("src/test.c") 我这边测试linux是生效的: g++ -o build/release/x86_64/test_demo build/.objs/test_demo/release/x86_64/src/test.c.o -Lbuild/release/x86_64 -Wl,-rpath=$ORIGIN -Wl,-rpath=/tmp/ -s -fvisibility=hidden -ltest -m64 -L/usr/local/lib -L/usr/lib 如果要通过add_ldflags设置,由于有自动检测,可能检测失败没通过,可以通过force参数强制设置: add_ldflags("-Wl,-rpath=/tmp", {force = true}) |
我是shared A 依赖 shared B。 如果是 exe 依赖 A 没问题,但是 A 找不到 B。我用 -v 查看过,A 的链接命令里没有 " -Wl, rpath” |
target("testB") target("testA") target("demo") |
漏写了, testA里 add_deps(testB) |
对于 shared 依赖 shared的情况,目前确实没做自动rpath的自动继承,并且add_rpathdirs的设置也没对shared做支持,仅支持对binary的链接设置,这个我后两天有时间改进下。 目前你可以先通过 可以看下相关文档说明:https://xmake.io/#/zh/manual?id=targetadd_shflags 等我后两天改进好,你再试试通过add_rpathdirs来对shared target的设置 |
试了下“add_shflags”,可以了。3Q much |
对于shared依赖shared target的情况,目前dev分支版本已经支持自动追加rpath了,并且add_rpathdirs对shared设置也可以生效了。。你可以试试 验证下,目前可以暂时还是通过add_shflags方式来设置。 等下个版本发布,可以切换过去,并且设置 set_xmakever("2.2.2") xmake最小版本提示就好。 |
测试通过 |
在linux下,如果target是动态库时(set_kind("shared")),add_rpathdirs以及add_ldflags都没有办法在链接时加入相应的参数。但是binary正常。
The text was updated successfully, but these errors were encountered: