OS X中的GNU Linker等效命令

 注定的等待幸福的到来 发布于 2022-12-23 18:05

我正在阅读以下关于操作系统的书.在第43页中,他们使用以下命令将带注释的机器代码转换为原始机器代码文件:

$ ld -o basic.bin -Ttext 0x0 --oformat binary basic.o

在我的MacBook Pro(运行Mavericks)中运行该命令时,我得到:

ld: unknown option: -Ttext

我做了一些研究,发现OS X的链接器不允许使用脚本文件作为链接器脚本.

互联网上的其他一些帖子建议使用以下"正确"格式:

$ ld -T text 0x0 --o format binary -o basic.bin basic.o

虽然它对我也没有用.

我也试过安装binutilsvia homebrew,但似乎没有附带GNU链接器.

该命令在Ubuntu 14.04中正确运行,但如果可能的话,我想继续在OS X中进行开发.

有没有办法用OS X的链接器获得相同的结果,可能有不同的标志?

更新:

我能够生成以下命令斌,使用gobjcopybinutils:

$ gobjcopy -j .text -O binary basic.o basic.bin

但是我无法找到一种方法来替代代码中的标签地址,例如我可以使用GNU ld -Ttext 0x1000.

我试着--set-start 没有运气:

$ gobjcopy -j .text --set-start 0x1000 -O binary basic.o basic.bin

小智.. 8

我遵循相同的os-dev.pdf指南,遇到了和你一样的问题.

问题的根源在于我们无论如何都需要编译交叉编译的gcc,因此解决方案就是这样做.

OSDev有一个很好的指南,但是如果你运行最新版本的OSX,我在Github上准备了一个特定的指南

这是命令,但请在粘贴计算机上的整个文本墙之前测试它们!在Github链接中,您将找到完整的解释,但由于Stack Overflow似乎喜欢嵌入在答案中的解决方案,现在就是.

此外,如果您遇到任何错误,请将其报告给我(此处或Github问题),以便我可以为其他人解决.

brew install gmp
brew install mpfr
brew install libmpc
brew install gcc

export CC=/usr/local/bin/gcc-4.9
export LD=/usr/local/bin/gcc-4.9

export PREFIX="/usr/local/i386elfgcc"
export TARGET=i386-elf
export PATH="$PREFIX/bin:$PATH"

mkdir /tmp/src
cd /tmp/src
curl -O http://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.gz # If the link 404's, look for a more recent version
tar xf binutils-2.24.tar.gz
mkdir binutils-build
cd binutils-build
../binutils-2.24/configure --target=$TARGET --enable-interwork --enable-multilib --disable-nls --disable-werror --prefix=$PREFIX 2>&1 | tee configure.log
make all install 2>&1 | tee make.log

cd /tmp/src
curl -O http://mirror.bbln.org/gcc/releases/gcc-4.9.1/gcc-4.9.1.tar.bz2
tar xf gcc-4.9.1.tar.bz2
mkdir gcc-build
cd gcc-build
../gcc-4.9.1/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --disable-libssp --enable-languages=c --without-headers
make all-gcc 
make all-target-libgcc 
make install-gcc 
make install-target-libgcc 

你会发现GNU的binutils和你的交叉编译的gcc /usr/local/i386elfgcc/bin

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有