首先需要安装库: sudo apt-get install gcc-multilib 然后编译的时候加上-m32即可: g++ -m32 main.cpp
gcc -m32 -fno-builtin -c TinyHelloWorld.c 3.手工链接: ld -m elf_i386 -e nomain -o TinyHelloWorld TinyHelloWorld.o 可以看到,最终成功。由于没有链接GCC标准库,因此链接默认采用的是static link静态链接,这就是自己开发操作系统内核的普遍方法。 这里的print函数使用了Linux的WRITE系统调用,exit函数使用了...
Target: x86_64-linux-gnu 所以,我这里的gcc默认生成64位的程序。 如果想编出32位的程序,就要加 -m32选项。可是我尝试了,还是不行。 原来,需要安装东西。 $ sudo apt-get install build-essential module-assistant $ sudo apt-get install gcc-multilib g++-multilib 装好之后,就OK了。 比如: gcc -m32 he...
使用 GCC 和 GNU Binutils 编写运行于 x86 实模式的 16 位代码的过程如下: 1、如果只用汇编语言编写 16 位程序,请使用.code16指令,并保证只使用 16 位的指令和寄存器;如果要和 C 语言一起工作,请使用.code16gcc指令,并且在函数框架中使用pushl,calll,retl,leavel,jmpl,使用0x8(%ebp)开始访问函数的参数;很...
1 完善GCC环境 安装g++编译器 命令:sudo apt-get install build-essentialbuild-essential是一套完整的软件包,它提供了编译程序必需的软件包列表信息,包括gcc,libc 安装词法和语法分析器 命令: sudo apt-get install flex sudo apt-get install bison 1. ...
gcc-m32-otest32 test.c gcc-m64-otest64 test.c 1. 2. 上述代码中,-m32表示编译为 32 位架构,而-m64表示编译为 64 位架构。 总结 在Ubuntu 中查看动态库的架构是一项重要的技能。使用命令行工具如file、readelf和dpkg可以帮助开发者和系统管理员快速获取所需的信息,确保各组件之间的兼容性。理解动态库与...
$ sudo apt-get install build-essential module-assistant $ sudo apt-get install gcc-multilib g++-multilib 然后在 g++ 编译时增加 -m32 参数,在 tasks.json 中增加即可。{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "...
例如,使用gcc编译器连接libGL.so库文件的命令如下:gcc -m32 -o myprogram myprogram.c -L/usr/lib/i386-linux-gnu -lGL 这个命令中的-m32参数表示使用32位的架构,-L参数指定库文件的路径,-lGL参数表示连接libGL.so库文件。 请注意,以上步骤是在64位的Ubuntu系统上连接32位的libGL.so库文件的一般方法。...
现在,你可以在64位的Ubuntu系统中连接32位的libGL.so库文件了。具体的连接方法取决于你的应用程序或开发环境。一般来说,你需要在编译或运行命令中指定库文件的路径。例如,使用gcc编译器连接libGL.so库文件的命令如下:gcc -m32 -o myprogram myprogram.c -L/usr/lib/i386-linux-gnu -lGL ...
这个问题是由于 gcc 4.6 不再支持 linker-style 架构。将 arch/x86/vdso/Makefile 中, 以VDSO_LDFLAGS_vdso.lds 开头所在行的 "-m elf_x86_64" 替换为 "-m64"。 以VDSO_LDFLAGS_vdso32.lds 开头所在行的 "-m elf_x86" 替换为 "-m32"。