我在阅读有关操作系统的the following book。在第43页,他们使用下面的命令来标注的机器代码转换成原始机器代码文件:OS X中的GNU Linker等价命令
$ ld -o basic.bin -Ttext 0x0 --oformat binary basic.o
当我的MacBook Pro运行命令(运行小牛队),我得到:
ld: unknown option: -Ttext
我做了一些研究,发现OS X的链接器不允许使用脚本文件作为链接器脚本。
在互联网上的一些其他职位建议使用下面的“正确”的格式:
$ ld -T text 0x0 --o format binary -o basic.bin basic.o
虽然它并没有为我既不工作。
我也尝试通过homebrew
安装binutils
,但它似乎没有GNU链接器。
该命令在Ubuntu 14.04中正确运行,但如果可能的话,我想继续在OS X中开发。
有没有办法获得与OS X的链接器相同的结果,可能具有不同的标志?
UPDATE:
我能够生成以下命令斌,使用gobjcopy
从binutils
:
$ gobjcopy -j .text -O binary basic.o basic.bin
但是我无法找到一个方法来抵消标签地址代码,正如我可以使用GNU ld,例如-Ttext 0x1000
。
我试着用--set-start <hex>
没有任何的运气:
$ gobjcopy -j .text --set-start 0x1000 -O binary basic.o basic.bin
查看MacPorts版本,您可能会发现[可用选择](http://www.macports.org/ports.php?by=name&substr=binutils)更多运气。 – 2014-09-03 01:28:50
我不认为gnu binutils ld支持osx。请参阅http://stackoverflow.com/questions/1608009/how-to-install-gnu-ld-on-mac-os-x-10-6和http://www.quora.com/How-do-I -get-GNU-ld-on-OS-X – 2014-09-03 04:17:12
有没有办法在不使用GNU ld specific的特性的情况下获得相同的结果? – jviotti 2014-09-03 12:15:52