nasm編譯器配置
① 匯編語言編譯器的NASM
NASM是一個為可移植性與模塊化而設計的一個80x86的匯編器。它支持相當多
的目標文件格式,包括Linux和'NetBSD/FreeBSD','a.out','ELF','COFF',微軟16
位的'OBJ'和'Win32'。它還可以輸出純二進制文件。它的語法設計得相當的簡
潔易懂,和Intel語法相似但更簡單。它支持'Pentium','P6','MMX','3DNow!',
'SSE' and 'SSE2'指令集,
② 怎麼在64位系統下編譯nasm
用記事本寫代碼
用命令編譯
nasm -f <format> <filename> [-o <output>]
-f後面是輸出格式,具體的用nasm -hf查詢
filename是代碼文件名
-o後面是輸出文件名
如果輸出類型的是一種object file的話要用鏈接器鏈接
一切操作都要在命令行下完成,如果不習慣命令行操作不建議用
③ 如何在64位的Linux系統上使用匯編和C語言混合編程 第2頁
編譯和鏈接的時候使用的指令:(AMD處理器,64位操作系統)
編譯鏈接指令
1 nasm -f elf foo.s -o foo.o
2 gcc -c bar.c -o bar.o
3 ld -s -o foobar bar.o foo.o
匯編語言用nasm編寫並用nasm編譯器編譯,而C語言用的是gcc編譯,這些都沒有問題,但是在鏈接的時候出錯了,提示如下:
ld: i386 architecture of input file `foo.o' is incompatible with i386:x86-64 output
google了一下,意思就是nasm 編譯產生的是32位的目標代碼,gcc 在64位平台上默認產生的是64位的目標代碼,這兩者在鏈接的時候出錯,gcc在64位平台上默認以64位的方式鏈接。
這樣在解決的時候就會有兩種解決方案:
<1> 讓gcc 產生32位的代碼,並在鏈接的時候以32位的方式進行鏈接
在這種情況下只需要修改編譯和鏈接指令即可,具體如下:
32位的編譯鏈接指令
1 nasm -f elf foo.s -o foo.o
2 gcc -m32 -c bar.c -o bar.o
3 ld -m elf_i386 -s -o foobar foo.o bar.o
具體的-m32 和 -m elf_i386 請自行查閱gcc (man gcc)
如果你是高版本的gcc(可能是由於更新內核造成的),可能簡單的使用-m32 的時候會提示以下錯誤(使用別人的歷程,自己未曾遇到):
> In file included from /usr/include/stdio.h:28:0,
> from test.c:1:
> /usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
> compilation terminated.
這應該是缺少構建32 位可執行程序缺少的包,使用以下指令安裝:
sudo apt-get install libc6-dev-i386
此時應該就沒有什麼問題了。
④ 請問NASM編譯器在哪下載,誰能給我一個官網的下載地址,謝謝!
1,官網:http://www.nasm.us/
2,官網最新版下載地址:http://www.nasm.us/pub/nasm/releasebuilds/2.11.09rc1/win32/nasm-2.11.09rc1-installer.exe
3,送上學習網站:http://www.mouseos.com/assembly/nasm02.html
⑤ 如何在 Windows 下編譯 OpenSSL
1)在微軟網站下載並安裝VS Studio,
2)下載並安裝ActivePerl。
3)下載並安裝Nasm匯編器。
4)下載並安裝OpenSSL的最新Release包。
這里需要強調的是,讀者未必需要完全按照步驟編譯OpenSSL庫,這里的部分次序是可以互換的。
在完成所有上述4步後,我們就可以解壓縮OpenSSL包,在對它進行修改便可以編譯了。在解壓縮後,所有的源代碼放在openssl- 1.0.1e目錄下,在此目錄下,有兩個文件INSTALL.W32, INSTALL.W64需要被關注。打開其中的任何一個文件,你會看到如何編譯OpenSSL的各個步驟。這里,筆者將會再啰嗦一下。
1)打開VS Studio命令行工具,如圖1所示。若編譯64位OpenSSL庫,請打開Visual Studio x64 Win64 Command Prompt,反之亦然。
2)配置編譯文件及安裝目錄;
編譯Win32:perl Configure VC-WIN32 --prefix=c:\some\openssl\dir
編譯Win64:perl Configure VC-WIN64A
「c:\some\openssl\dir」目錄可以改成任何你希望的安裝目錄
3)搭建編譯環境:
ms\do_nasm
ms\do_ms
對於64位編譯,將ms\do_ms替換成ms\do_win64a
4)編譯OpenSSL
nmake -f ms\ntdll.mak
5)安裝編譯生成的庫到「c:\some\openssl\dir」
nmake -f ms\ntdll.mak install