xmake-io / xmake

🔥 A cross-platform build utility based on Lua
https://xmake.io
Apache License 2.0
9.87k stars 775 forks source link

add_ldflags添加"-Wl,--no-as-needed" 无法正常生效 #5621

Closed KkemChen closed 1 week ago

KkemChen commented 1 week ago

Xmake 版本

2.9.4

操作系统版本和架构

Ubuntu18.04

描述问题

我现在有demo需要链接几个动态库,但是该段代码中并未直接使用到这几个库中的代码,所以导致最终并没有链接上, 尝试添加了add_ldflags("-Wl,--no-as-needed"),但是看编译命令,xmake把他加到了最后面 也就并不能正常生效。 image image

期待的结果

提供解决方案

工程配置

target("yolo_test")
    set_kind("binary")

    add_deps("nndeploy_framework","nndeploy_plugin_codec","nndeploy_plugin_detect","nndeploy_plugin_infer", "nndeploy_plugin_basic")

    add_includedirs("$(projectdir)/framework/include")
    add_includedirs("$(projectdir)/plugin/include")
    add_includedirs("$(projectdir)/demo")

    add_files("$(projectdir)/demo/*.cc")
    add_headerfiles("$(projectdir)/demo/*.h", {install = false})

    add_files("$(projectdir)/demo/yolo_test/**.cc")
    add_headerfiles("$(projectdir)/demo/yolo_test/**.h", {install = false})

    add_packages("opencv", "gflags", "onnxruntime")

    add_links("nndeploy_framework","nndeploy_plugin_basic", "nndeploy_plugin_codec", "nndeploy_plugin_detect", "nndeploy_plugin_infer")
    add_ldflags("-Wl,--no-as-needed")

附加信息和错误日志

[ 98%]: linking.debug yolo_test
/usr/bin/g++ -o build/linux/x86_64/debug/yolo_test build/.objs/yolo_test/linux/x86_64/debug/demo/flag.cc.o build/.objs/yolo_test/linux/x86_64/debug/demo/yolo_test/demo.cc.o -m64 -L/usr/local/lib -L/root/.xmake/packages/l/libdrm/2.4.118/1b3643c7b5084929bfbf9a3bd621b192/lib -L/root/.xmake/packages/g/gflags/v2.2.2/0f545414272c459b907061d5e923ed20/lib -L/root/.xmake/packages/o/onnxruntime/1.15.1/69232ba25286415bb22e4b3b3adfad76/lib -Lbuild/linux/x86_64/debug -Wl,-rpath=$ORIGIN -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_datasets -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_line_descriptor -lopencv_optflow -lopencv_video -lopencv_plot -lopencv_reg -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_rgbd -lopencv_viz -lopencv_surface_matching -lopencv_text -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_xobjdetect -lopencv_objdetect -lopencv_ml -lopencv_xphoto -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_photo -lopencv_imgproc -lopencv_core -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lpostproc -lswresample -lswscale -ldrm -ldrm_radeon -ldrm_nouveau -ldrm_amdgpu -lgflags -lonnxruntime -lnndeploy_plugin_codec -lnndeploy_plugin_detect -lnndeploy_plugin_infer -lnndeploy_plugin_basic -lnndeploy_framework -lpthread -Wl,--no-as-needed
ldd yolo_test | grep nndeploy

libnndeploy_plugin_codec.so (0x00007f55f81b7000)
libnndeploy_framework.so (0x00007f55f7c7f000)
Issues-translate-bot commented 1 week ago

Bot detected the issue body's language is not English, translate it automatically.


Title: add_ldflags added "-Wl,--no-as-needed" cannot take effect normally

waruqi commented 1 week ago

目前只能改 links 的顺序,这个 ldflags 顺序改不了。要么你代码里引入这些符号,link进去。

Issues-translate-bot commented 1 week ago

Bot detected the issue body's language is not English, translate it automatically.


Currently, only the order of links can be changed, but the order of ldflags cannot be changed. Either introduce these symbols into your code and link them.

KkemChen commented 1 week ago

寄😥

Issues-translate-bot commented 1 week ago

Bot detected the issue body's language is not English, translate it automatically.


Send 😥