我的系统是Centos 5.8 64位,我想编译一个链接到32位库的文件。编译时加上-m32,但结果显示“输入文件”gc_basic_call_model_voice_video_3g_cnf_nbup.o“的i386:x86-64架构与i386输出不兼容”。 看来,该文件不能在32位编译。但是如果我不添加-m32,库不能被编译。如何成功编译文件,谢谢!如何编译与32位库链接的64位文件
0
A
回答
6
您不能在同一个程序中混合使用32位和64位代码。编译器告诉你,你的.o
文件之一被编译为64位对象,所以它不能链接到32位可执行文件中。您需要重新编译该目标文件,也可能使用其他源代码,使用-m32
来处理所有内容。
0
假设你编译你的程序的32位版本(姑且称之为foo.c的)以下列方式:
gcc -m32 -c foo.c -o foo.o
您应该然后调用使用-melf_i386标志就可以了链接。
ld <whatever commands/flags you gave earlier> -melf_i386
实施例:
ld -o foo.bin --oformat binary basic.o -melf_i386
相关问题
- 1. 编译和链接Debian 64位上的32位应用程序
- 2. Xcode:编译与32位库的64位应用程序
- 3. 编译为64/32位iOS
- 4. 符号链接编译使用32位库的代码在64位的Ubuntu 12.10
- 5. 如何链接64位编译器(体系结构)的32位框架
- 6. 在Centos中链接64位应用程序与32位库5.6 64位
- 7. 使用64位应用程序链接QT 32位库(MinGW64编译器)?
- 8. 在64位DMD上编译32位
- 9. 从Win7编译32位64位
- 10. Java类编译64位32位
- 11. 在64位Linux上编译32位libGLEW.so
- 12. 32位指针在64位Solaris编译
- 13. 将32位代码编译为64位
- 14. 在linux 64位下与32位库链接
- 15. 在Windows 64位上运行的Matlab 32位编译MEX文件
- 16. 将32位编译后的开源库转换为64位编译库
- 17. gcc:在32位平台上编译64位二进制文件
- 18. 试图在OS X上编译32位和64位的GNU库
- 19. 动态库的链接问题的Solaris(32位和64位)10
- 20. 我如何检查编译的二进制文件是32位还是64位?
- 21. Gluegen 32位和64位库
- 22. 如何在py2app的32位旧版Mac上编译64位Python库(例如SIP)?
- 23. 如何编程混合32位库和64位库
- 24. Java JDK 32位与64位
- 25. SHGetFolderPath()32位与64位
- 26. 如何在64位系统上以32位模式编译openSSL?
- 27. 如何在64位RHEL上编译32位应用程序?
- 28. 如何将32位编译二进制转换为64位
- 29. 使用CMake编译32位与64位项目
- 30. 编译从32位到64位的软件
哪台机器? Linux呢? – weima 2012-04-09 05:16:27
你使用过标志'-fPIC'和'-rdynamic' – weima 2012-04-09 05:19:41
我使用命令“gcc -m32 A.c B.c -Ldir -o output1.o output2.o”。但结果显示i386:输入文件“output1.o”的x86-64架构与i386输出不兼容。 dir中的文件是32位库。我不知道该怎么做:( – Jasoniem9246 2012-04-09 05:43:38