㈠ 64位UBUNTU 下 如何用GCC 编译出32位程序 求前辈指点
目测是32位的搜索路径下没有sys/cdefs.h
一般64位系统最好不要安装32位库的-dev,经常有冲突,强行安装会破坏64位环境,头文件并不像共享库分得那么完美。
我觉得比较好的做法是,重新把某一个文件夹当成rootfs,在里面安装各种32位的库和库-dev,然后给gcc传递参数"--sysroot=路径"就可以让gcc重新选取那个文件夹为rootfs,而不再认为/为rootfs。其实这样就变成交叉编译了。也可以在这个rootfs中安装32位的必要软件包如bash,gcc,coreutils等等,然后chroot进去就变成host编译了。其实有个比较简单的方法,就是虚拟机下安一个32位的ubuntu,然后装好各种软件包,然后直接对/打包,再拿出来解压就是rootfs了,后面最多就是缺啥安啥,工作量比较小。当然如果你不在意编译速度,直接虚拟机下编最简单
㈡ gcc g++ 使用哪些编译选项可以让编译出来的程序兼容32位和64位
用32位的gcc,编译出来后,能在32位上运行,也能在64位上兼容。
㈢ 64位linux编译32位程序
在64位的Linux下,gcc 编译 32 位程序需要添加参数 -m32 ,ld需要添加参数是 -m elf_i386。
1、Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bit object files to the 32bit libraries if you have both the 32bit and 64bit libraries.
2、 ld命令 ld命令是GNU的连接器,将目标文件连接为可执行程序。
3、举例:
gcc -m32 -o hello hello.c
gcc -m32 -c hello.o hello.c
ld -m elf_i386 -o kernel main.o hello.o
㈣ 如何在Linux下用gcc将c语言文件编译成32位exe文件,且可以在Windows下运行
有方法的,不过要看你编绎出的程序需要用到多少windows的库,看看linux下有没有可以替代的,不过很多时候没有windows内核还是无法编译成功的。
方法一:安装mingw32
方法二:virtualbox安装xp的虚拟机
方法三:通过wine使用cl命令行编译
上面几个方法你可以尝试一下。
至于编辑嘛,高手一般直接就用vim,如果你觉得难用的话,可以用eclipse或者kdevelop,kdevelop有点像windows下VS,希望对你有所帮助
㈤ 如何用GCC在linux下编译C语言程序
在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器,假设我们有下面一个非常简单的源程序(hello.c):
int main(int argc,char **argv)
{
printf("Hello Linux
");
}
要编译这个程序,我们只要在命令行下执行:
gcc -o hello hello.c
gcc 编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程
序的输出结果了