gcc -Wall -O2 -m32 driver.o kernels.o fcyc.o clock.o -lm -o driver /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libgcc_s.so when searching for -lgcc_s /usr/bin/ld: cannot find -lgcc_s collect2: error: ld returned 1 exit status
时间: 2023-08-21 15:07:37 浏览: 60
这个错误通常是因为你在编译32位程序时使用了64位的库文件,可以尝试使用以下命令来编译:
gcc -Wall -O2 -m32 driver.o kernels.o fcyc.o clock.o -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/32 -lgcc_s -lm -o driver
其中-L选项指定了库文件的搜索路径,-lgcc_s指定了需要链接的库文件。
相关问题
在debian中gcc -E -g -m32 test.c -o test.i
在 Debian 中,使用 gcc 编译器进行预处理,可以使用 `-E` 选项,使用 `-g` 选项生成调试信息,使用 `-m32` 选项生成 32 位可执行文件。因此,要将 test.c 文件预处理并生成 32 位可执行文件,可以使用以下命令:
```
gcc -E -g -m32 test.c -o test.i
```
这将生成名为 test.i 的预处理后的文件,其中包含了所有的宏定义和条件编译指令等内容。然后,你可以使用 gcc 编译器将预处理后的文件编译成目标文件,命令如下:
```
gcc -g -m32 -c test.i -o test.o
```
这将生成名为 test.o 的目标文件,其中包含了可执行文件的机器代码和其他数据。最后,你可以使用 gcc 编译器将目标文件链接成可执行文件,命令如下:
```
gcc -g -m32 test.o -o test
```
这将生成名为 test 的 32 位可执行文件,你可以使用 `./test` 命令来运行它。
sudo nano /usr/arm-linux-gnueabihf/lib/crti.o都是乱码
抱歉,我的回答有误。在 /usr/arm-linux-gnueabihf/lib/ 目录下找不到 crt1.o 文件。正确的文件路径应该是 /usr/arm-linux-gnueabihf/libc/usr/lib/arm-linux-gnueabihf/crti.o。以下是正确的步骤:
1. 打开文件 /usr/arm-linux-gnueabihf/libc/usr/lib/arm-linux-gnueabihf/crti.o,使用以下命令打开文件:
```
sudo nano /usr/arm-linux-gnueabihf/libc/usr/lib/arm-linux-gnueabihf/crti.o
```
2. 在打开的文件中查找 ld-linux-armhf.so.3,并将其替换为 ld-linux.so.3。
3. 保存文件并退出。
现在,arm-linux-gnueabihf-gcc 将优先使用 ld-linux.so.3 而不是 ld-linux-armhf.so.3。