導航:首頁 > 編程系統 > linux編譯64位

linux編譯64位

發布時間:2023-06-07 21:09:06

A. 如何在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
此時應該就沒有什麼問題了。

B. 如何用GCC編譯64位linux程序

如果是64位gcc,則取默認模式編譯就可以了;如果是在32位系統下,則需要cross compile,編譯時需要設定一些參數(指定目標CPU架構等),具體參數要看具體環境。
命令還是gcc、make,版本不限(別「太」舊,舊到還沒添加cross compile功能:這項功能很早就有了)。

C. 64位linux編譯32位程序

這個比較麻煩。
首先你要裝好全套的 32 位對應的開發編譯支持環境和對應的運行環境,之後還要設置你這個軟體編譯時用 32 位的參數和 32 位的編譯器。

你這個其實等同於交叉編譯。

D. 怎麼編譯安裝64位的mysql 在linux平台

你是希望源代碼安裝mysql,用於apache php環境的。見下面一定好用,安裝目錄可以定製,下面/export/mysql是舉例,自己可以改。

1解壓安裝包 tar –zxvf mysql-5.0.32.tar.gz
2創建安裝目錄
mkdir –p /export/mysql/var
3編輯安裝包
在mysql-5.0.32目錄下,執行
./configure --prefix=/export/mysql \
--with-charset=gbk \
--localstatedir=/export/mysql/var
4編譯安裝
就在當前目錄下命令 :
make
make install

E. Linux32位可以不可以編譯出64位的軟體

可以的。
編譯64位程序,不一定要編譯機器是64位的,但是32位機器默認安裝的gcc編譯環境還是不能用來編譯64位程序。
編譯64位程序,需要加上-m64編譯器參數,默認安裝的gcc已經支持該參數,但是缺少64位機器指令相關的文件,所以不能編譯,會出現下面的錯誤
In file included from /usr/include/features.h:378,
from /usr/include/assert.h:37,
from ../../../include/tinyxml/tinystr.h:42,
from ../../../src/tinyxml/tinystr.cpp:32:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 沒有那個文件或目錄
這時候需要安裝 gcc所有支持文件 sudo apt-get install gcc-multilib
將會安裝下列額外的軟體包:
cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1
libstdc++6 libstdc++6-4.4-dev
建議安裝的軟體包:
gcc-4.4-locales g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg libmudflap0-4.4-dev libgcc1-dbg libgomp1-dbg libmudflap0-dbg
libcloog-ppl0 libppl-c2 libppl7 lib64mudflap0 libstdc++6-4.4-doc
下列【新】軟體包將被安裝:
gcc-4.4-multilib gcc-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64
下列軟體包將被升級

F. linux32位編譯64位內核求詳細教程

下載一個64位的內核包,解壓make moles_install。再make install ,進grub.conf修改一下啟動版本應該就可以了

G. mips-linux-uclibc-gcc 怎麼編譯64位程序

理論上安裝支持來環境,之後源 64 位的 gcc 編譯成 32 位程序,就加 -m32 參數即可。當然還一個辦法是裝個 32 位的 gcc 。
另外,交叉編譯也適用於 x86 架構。

不過這么編譯經常會出現各種問題,所以編譯 32 位的程序,最好還是用 32 位系統。
不一定重裝,用 chroot 和 setarch 命令配合即可弄出一個 32 位的子系統。

閱讀全文

與linux編譯64位相關的資料

熱點內容
u盤裡面的文件夾刪掉了能恢復嗎 瀏覽:108
mac命令行打開文件 瀏覽:356
大數據挖掘需要什麼研究方向 瀏覽:241
微信群右上角變成加號 瀏覽:162
js下拉重新載入重新請求 瀏覽:352
core文件位置 瀏覽:166
虛擬鍵改文件名 瀏覽:58
u盤一些文件消失了占著內存 瀏覽:537
macos文件恢復 瀏覽:89
彈幕姬點歌使用教程 瀏覽:593
ps水印文件格式 瀏覽:555
製作一個文件發送軟體 瀏覽:493
同步推修改密碼 瀏覽:723
柴油車刷數據是什麼意思 瀏覽:847
apmnodejs 瀏覽:464
文檔文件下建立word文檔 瀏覽:192
見面的次數大數據多少合適 瀏覽:877
web編程基礎是學什麼的 瀏覽:420
東陽哪裡有寶馬編程 瀏覽:744
下載軟體文件變成應用程序 瀏覽:712

友情鏈接