我在閱讀有關操作系統的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