自制编译器——cbc安装后使用出问题
记录一下自己在github上的一个回答,详细安装步骤可以看绝云大师的github
安装详解
问题描述:
kim@kim-virtual-machine:~/桌面$ cbc -Wa,"–32" -Wl,"-melf_i386" hello.cb
/usr/bin/ld: 找不到 /usr/lib32/crt1.o: 没有那个文件或目录
/usr/bin/ld: 找不到 /usr/lib32/crti.o: 没有那个文件或目录
/usr/bin/ld: 当搜索用于 /usr/lib/x86_64-linux-gnu/libc.so 时跳过不兼容的 -lc
/usr/bin/ld: 当搜索用于 /usr/lib/x86_64-linux-gnu/libc.a 时跳过不兼容的 -lc
/usr/bin/ld: 找不到 -lc
/usr/bin/ld: 找不到 /usr/lib32/crtn.o: 没有那个文件或目录
cbc: error: /usr/bin/ld failed. (status 1)
cbc: error: compile error
问题解决:
问题已解决!
有需要的朋友可以看一下:
由于是linux新手而且在网上也没找到消息所以我就一步步解决问题:
1.找不到crt文件
/ usr / bin / ld:找到/usr/lib32/crt1.o:没有那个文件或目录
/ usr / bin / ld:找到/usr/lib32/crti.o:没有那个文件或目录
首先通过locate crt1.o找到crt文件的位置
/usr/lib/x86_64-linux-gnu/crt1.o
cd /usr/lib/x86_64-linux-gnu 后 发现crt文件都在这个目录下,再执行sudo cp /usr/lib/x86_64-linux-gnu/crt /usr/lib32/将需要的crt*文件复制到缺失的lib32中
2.兼容性问题
/ usr / bin / ld:当搜索使用/ usr / lib / x86_64-linux-gnu /libc.so时跳过不兼容的-lc
/ usr / bin / ld:当搜索使用/usr/lib/x86_64-linux-gnu/libc.a时跳过不兼容的-lc
/ usr / bin / ld:找不到-lc
原因:系统缺失32 位的静态库和动态库库文件
执行命令:sudo apt-get install build-essential module-assistant gcc-multilib g+±multilib
综上解决问题。
还有问题的话大家可以在下面留言
附上大佬的简化命令方法:原文地址
新建文件命名为cbc写入以下内容,并添加可执行权限,再建立软链接到/usr/local/bin/cbc64即可
#!/bin/bash
cbc -Wa,"–32" -Wl,"-melf_i386" $1 -L /usr/lib32
编译命令便可简化为
cbc64 test/hello.cb
等价于
cbc -Wa,"–32" -Wl,"-melf_i386" test/hello.cb -L /usr/lib32
脚本说明:-L参数是指定库所在位置,/usr/lib32是我所用系统Manjaro(ArchLinux系)32位库所在的路径