64位ubuntu下编译32位汇编程序(同时链接C库)
as --32 cmd.s -o cmd.o # 调试的话加上选项 -gstabs
ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 cmd.o -o cmd -lc
--32声明为32位程序
链接时elf_i386也是表明链接32位库
-dynamic-linker /lib/ld-linux.so.2 使我们能链接到库,这样可执行文件会在执行前生成,而操作系统将加载程序/lib/ld-linux.so.2,以加载外部库并将其链接到程序。这种程序称为动态链接器。
选项-lc表示:链接库c。该库在GNU/Linux系统上的文件名称为libc.so。给定库名,在本例中为c(通常库不止一个字符),GNU /Linux链接器就爱那个字符串lib加至库名前,就爱那个字符串.so加到库名后,构成库文件名。这个库包含很多函数以自动执行各种任务。我们使用了 printf和exit。
当我们使用-lc来链接cmd程序时,将该选项告诉链接器使用c库(即libc.so)来寻找未在cmd,o中定义过的符号。但实际上这并未增加任何代码 到我们的程序,只是在程序中说明到哪里寻找。程序cmd开始时,首先加载文件/lib/ld-linux.so.2,这是动态链接器,会查看cmd程序, 并法线改程序需要c库才能运行。因此链接器在标准目录(即/etc/ld.so.conf下以及环境变量LD_LIBRARY_PATH中的所有目录下) 查找名为libc.so的库,然后在库中查找所需符号(即printf和exit),并加载到程序的虚拟内存。最后,链接库以库中printf的实际位置 代替程序中的printf的所有实例。
运行ldd ./cmd
这次会报如下信息
- linux-gate.so.1 => (0xf7763000)
- libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7590000)
- /lib/ld-linux.so.2 (0xf7764000)
相关推荐
现在XP退出历史舞台了,Win7代替了它,内在都有4G以上了,所以用64位操作系统是必须的,但是64位下用VB6编译带有数据库操作的程序可能无法在32位下正常使用!,这里提供解决方案,希望对VB6的用户有所帮助!
windows版本编译好的Boost库 包含头文件 和Lib 32位和64位全都有 下载就可用
xgboost 0.4版本编译后32位&64位,按下面链接里的说法,0.47版本不支持Windows,所以对0.4版本用vs2015社区版进行32位和64位编译,分别用于32位操作系统/32位python和64位操作系统/64位python,xgboost最新版本0.6,...
ubuntu11.10(64位)虚拟linux系统下 ---修改编译android工程 工具是android应用签名app_signa
Win7 64位系统下通过VS2015编译好的所有八个版本的OpenSSL链接库, 包含以下八个版本: 1、32位、debug版LIB; 2、32位、release版LIB; 3、32位、debug版DLL; 4、32位、release版DLL; 5、64位、debug版LIB; 6、...
这两个文档介绍了如何在32位的windows系统中编译32位和64位的luajava1.1的过程。
编译完成的libgd图形库,是在widnows系统下编译,里面包含了64位和32位的libgd库包含libgd.lib libgd_a.lib libgd.dll libgd.pdb 和ligd的头文件 如gd.h
win10系统中OpenCV3.4.1版本在VS2013中的编译结果,可以直接使用
delphi反编译工具 dede3.99,可提取源代码 支持win7 win8 win10 32-64位系统
Redis最新7.0版本,已编译为windows版本,适用于64位与32位,已经编写好启动脚本,免安装,双击即可启动redis服务,非常方便。
包含window系统下32位和64位的opecv3.2.0编译库以及头文件,64位编译库对应在x64文件夹下,32位编译库对应在x86文件夹下,本人已在win10+vs2015的x64/x86开发平台上实验成功
64位AutoCAD,32位Access。读取时,读取错误。此工具就是解决这个问题的。
Function Boolean Iswin64bits() LIBRARY "winis64bits.dll" ALIAS FOR "Iswin64bits" if Iswin64bits() then messagebox('提示','64位操作系统') ... messagebox('提示','32位操作系统') end if
编译环境: Win10_VS2013_FMC 集成了MD5和一些文件的基本信息查看.
开源音视频处理软件ffmepg4.0.2版本的源码编译库,在win10 x64位系统下编译,包含avcodec-58.dll,avdevice-58.dll,avfilter-7.dll,avformat-58.dll,avutil-56.dll,swscale-5.dll,swresample-3.dll
拷贝: /usr/lib/i386-linux-gnu/liblzo2.a /usr/lib/i386-linux-gnu/liblzo2.so.2.0.0 建立符号链接: ln -s /usr/lib/i386-linux-gnu/liblzo2.so.2.0.0 /usr/lib/i386-linux-gnu/liblzo2.so.2 ...
3、控件安装后在菜单栏Tools -- Options -- Language -- Delphi -- Libray中找到Selected PlatForm下分别选择Windows 32-Bit、Windows 64-Bit,分别在32位和64位的LibrayPath中添加当前控件的路径,完成后。...
vs 2015编译的glut库,版本是3.7,含32位库和64位库,结合OpenGL库使用。GLUT代表OpenGL应用工具包,英文全称为OpenGL Utility Toolkit,是一个和窗口系统无关的软件包,它由Mark Kilgard在SGI时写的。作为AUX库的...
de4dot反编译工具是一款万能的.net反编译神器,他拥有强大的脱壳能力,程序员们都懂得,快来下载体验吧。 使用说明 1、解压文件 2、32位系统运行【de4dot.exe】,64位系统运行【de4dot-x64.exe】
背景Hadoop官网提供的编译包如hadoop-2.7.5.tar.gz为Linux32位环境编译,其中nativelibrary在64位环境中运行会出现异常。因而在64位生产环境中使用的Hadoop是需要下载源代码并在64位系统中进行成功编译后的版本。