记录一个奇怪的bug:/usr/bin/ld: this linker was not configured to use sysroots

有一个代码需要编译pyflow,用本地的python2编译得挺好,命令如下:

g++ -pthread -shared -Wl,-z,relro build/temp.linux-x86_64-2.7/pyflow.o build/temp.linux-x86_64-2.7/src/Coarse2FineFlowWrapper.o build/temp.linux-x86_64-2.7/src/Stochastic.o build/temp.linux-x86_64-2.7/src/OpticalFlow.o build/temp.linux-x86_64-2.7/src/GaussianPyramid.o -L/usr/lib64 -lpython2.7 -o /ssd/gy/iSeeBetter/pyflow/pyflow.so

用anaconda装的新环境下的python3编译就出

/usr/bin/ld: this linker was not configured to use sysroots

命令如下:

g++ -pthread -shared -B /ssd/gy/env/vsr/compiler_compat -L/ssd/gy/env/vsr/lib -Wl,-rpath=/ssd/gy/env/vsr/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.7/pyflow.o build/temp.linux-x86_64-3.7/src/Coarse2FineFlowWrapper.o build/temp.linux-x86_64-3.7/src/Stochastic.o build/temp.linux-x86_64-3.7/src/OpticalFlow.o build/temp.linux-x86_64-3.7/src/GaussianPyramid.o -o /ssd/gy/iSeeBetter/pyflow/pyflow.cpython-37m-x86_64-linux-gnu.so

/usr/bin/ld: this linker was not configured to use sysroots
collect2: 错误:ld 返回 1

查了半天有说mv /usr/bin/ld 到 /usr/bin/ld.xxx的,结果直接找不到ld了。

最后搞了一晚上,实在没办法了直接模仿本地Python2的命令居然过了。命令如下:

g++ -pthread -shared -Wl,-z,relro build/temp.linux-x86_64-3.7/pyflow.o build/temp.linux-x86_64-2.7/src/Coarse2FineFlowWrapper.o build/temp.linux-x86_64-3.7/src/Stochastic.o build/temp.linux-x86_64-3.7/src/OpticalFlow.o build/temp.linux-x86_64-2.7/src/GaussianPyramid.o -L/usr/lib64 -o /ssd/gy/iSeeBetter/pyflow/pyflow.so

实验发现把中间那些乱七八糟的删掉也可以过:

g++ -pthread -shared build/temp.linux-x86_64-3.7/pyflow.o build/temp.linux-x86_64-3.7/src/Coarse2FineFlowWrapper.o build/temp.linux-x86_64-3.7/src/Stochastic.o build/temp.linux-x86_64-3.7/src/OpticalFlow.o build/temp.linux-x86_64-3.7/src/GaussianPyramid.o -o /ssd/gy/iSeeBetter/pyflow/pyflow.cpython-37m-x86_64-linux-gnu.so

这是说-sysroot=/报错的话,删掉就ok?

g++真是神奇,编译的姿势水平还有待提高......

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以看出PATH的值是"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/arm/4.3.2/bin"。 这个路径包含了一些系统命令和应用程序的路径,可以让系统找到并执行它们。比如/usr/bin路径下存放了很多常用的命令,比如ls、mv、cp等。同样,/usr/local/bin路径下也包含了一些用户自行安装的命令和应用程序。其他的路径也类似。 所以,这个PATH的值告诉系统在哪些路径下去查找可执行文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [hive报错no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:Exception in thread &ldquo;main&ldquo; ...](https://blog.csdn.net/m0_59483606/article/details/127395718)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [在配置SSH免密登录时报错:/usr/bin/ssh-copy-id: ERROR: failed to open ID file ‘/root/.pub’: 没有...](https://download.csdn.net/download/weixin_38518885/14039030)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [no javac in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)](https://blog.csdn.net/m0_55155505/article/details/123103074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值