首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >/usr/bin/ld:跳过不兼容/usr/lib/gcc/x86_64-linux-gnu/9/libstdc++.a搜索-lstdc++ /usr/bin/ld:无法找到-lstdc++

/usr/bin/ld:跳过不兼容/usr/lib/gcc/x86_64-linux-gnu/9/libstdc++.a搜索-lstdc++ /usr/bin/ld:无法找到-lstdc++
EN

Stack Overflow用户
提问于 2020-03-05 20:36:03
回答 1查看 8.8K关注 0票数 8

我为什么要犯这个错误?

代码语言:javascript
运行
复制
g++ -m32 func.o test.o -o prgram

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/9/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/9/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status

我的代码如下:

代码语言:javascript
运行
复制
#include<stdio.h>
  2 
  3 
  4 extern "C" int calcsum(int a, int b, int c);
  5 
  6 int main(int argc,char* argv[])
  7 {
  8     int a = 10;
  9     int b = 20;
 10     int c = 30;
 11     int sum = calcsum(a,b,c);
 12 
 13     printf("a: %d", a);
 14     printf("b: %d", b);
 15     printf("c: %d", c);
 16     printf("sum: %d", sum);
 17     return 0;
 18 }
 19 
代码语言:javascript
运行
复制
 1 section .text
  2     global _start
  3 _start:
  4 global _calcsum
  5 _calcsum:
  6 
  7     push ebp
  8     mov ebp, esp
  9 
 10     mov eax, [ebp+8]
 11     mov ecx, [ebp+12]
 12     mov edx, [ebp+16]
 13 
 14     add eax, ecx
 15     add eax, edx
 16 
 17     pop ebp
 18     ret
EN

Stack Overflow用户

回答已采纳

发布于 2020-03-05 20:44:42

您正在64位系统上构建32位二进制文件(因为您使用了-m32标志),但是还没有安装32位版本的开发库。

如果你在Ubuntu,试着:

代码语言:javascript
运行
复制
sudo apt install gcc-multilib g++-multilib libc6-dev-i386

至于你的汇编文件,它不能按原样工作。start将由cpp文件定义,因此将其从asm文件中删除。接下来,从_calcsum中删除下划线。在构建ELF二进制文件时,函数名不以下划线开头:

代码语言:javascript
运行
复制
section .text
global calcsum
calcsum:

    push ebp
    mov ebp, esp

    mov eax, [ebp+8]
    mov ecx, [ebp+12]
    mov edx, [ebp+16]

    add eax, ecx
    add eax, edx

    pop ebp
    ret

将其构建为32位ELF对象文件,其中:

代码语言:javascript
运行
复制
nasm -felf32 func.s -o func.o
票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60553541

复制
相关文章

相似问题

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