當前位置:首頁 » 編程軟體 » 如何在x86環境下進行交叉編譯

如何在x86環境下進行交叉編譯

發布時間: 2022-08-08 10:41:00

『壹』 能在x86上編譯運行在arm的交叉編譯器嗎

,在進行ARM-linux嵌入式開發時必須在PC機(x86結構)上編譯出能夠運行在ARM上的程序,然後再將程序下載到ARM中來運行.這就用到了交叉編譯器...

『貳』 如何交叉編譯Python到ARMLinux平台 / 藍訊

步驟一:部署protoc.exe
1)sudo su ---進入管理模式
//以下操作切換至protobuf文件夾
2)。/configure
3)make
4)make check
5)make install
此時可以查看protobuf文件夾下面的makefile文件,可以查看-build表示的本機環境以及-host表示的編譯庫的運行環境
我本地的-build=x86_64-apple-darwin12.3.0
-host=x86_64-apple-darwin12.3.0
(這兩個參數在後續配置腳本需要用到,與後面腳步的i686-apple-darwin12.3.0以及arm-apple-darwin12.3.0後綴「arm-apple-darwin12.3.0」保持一致)
6)make distclean清理已生成的makefile,為交叉編譯配置新makefile做准備

『叄』 怎樣交叉編譯QT程序使之能在目標板上運行!

最主要的還是,你的QT在PC上運行的x86的,最後要換成arm結構的,你得懷疑下你的bin是不是真的是arm架構的。

『肆』 如何在 Intel x86 伺服器上構建 IBM PowerLinux 應用程序 第2頁

環境和配置
測試環境有一個 IBM Flex System® 組成,該系統有多個 IBM Flex System x240 計算節點和兩個基於 IBM POWER7 處理器的節點(一個 Flex System p260 和一個 Flex System p460)。出於本項目的目的,我使用一個 Flex system x240 計算節點來交叉編譯 Apache httpd 和 Postgresql。構建二進製程序後,我將它們轉移到 Flex System p460 計算節點。圖 7 顯示了 IBM Flex System 測試環境的布局圖。
圖 7. IBM Flex System 測試環境

以下是我的系統配置、操作系統級別和其他與系統設置相關的信息。
Flex System x240 計算節點
用於交叉編譯二進製程序的 Intel 節點僅需要足夠的處理能力和內存,以便能夠構建 Power 二進製程序。配置如下:
基於內核的虛擬機 (KVM) 管理程序 Red Hat 6.5
32 個處理器
64 GB 內存
IBM Storwize® V7000 存取區域網路 (SAN) 連接磁碟
KVM Guest 系統
Red Hat Enterprise Linux 6.5
4 個處理器
16 GB 內存
一個 virtio 磁碟:100 GB
一個配置為 br0 的虛擬網路介面卡 (NIC)
所有其他 KVM Guest 系統都已關閉,以消除破壞環境的任何可能性。
Flex System p440 計算節點
Flex System p440 計算節點包含多個邏輯分區 (LPAR),其中一個配置為測試伺服器。PowerLinux 伺服器配置如下:
IBM PowerVM® 來賓
Red Hat Enterprise Linux 6.5
8 個處理器(專用)
32 GB 內存
Storwize V7000 SAN 連接磁碟 (50 GB)
通過虛擬 I/O 伺服器 (VIOS) 共享的乙太網適配器
LPAR 配置
最小內存:256 MB
目標內存:32 GB
最大內存:64 GB
最少處理器數:8
目標處理器數:8
最大處理器數:32
處理模式:專用
專用內存
虛擬乙太網適配器(通過 VIOS 建立)
適配器 ID:2
VLAN ID:1
需要此適配器來激活虛擬伺服器:已選擇
以下是我運行的其他一些命令:
# ppc64_cpu --frequency
min: 3.56 GHz (cpu 28)
max: 3.56 GHz (cpu 4)
avg: 3.56 GHz
# ppc64_cpu --cores-present
Number of cores present = 8
# sysctl.conf
kernel.sem = 250 32000 32 12288
使用 toolchain 構建應用程序
通常,構建開源發行版的過程是一個迭代過程。如果您很幸運的話,該過程可能已構建完成。不幸的是,因為大多數開源發行版都構建於 x86 伺服器之上,所以在嘗試為不同架構(比如 IBM Power 架構)構建它們時可能遇到問題。
如果在 Power 上構建開源包時遇到問題,只需在互聯網上搜索類似情形,查看這些已報告的問題是否與您的經歷密切相關。如果是相關的,那麼在大多數情況下,您可以找到如何解決該問題的建議。
對我而言,盡管為配置腳本選擇正確參數後,postgresql 很好地構建完成了,但 apache httpd 沒那麼幸運。接下來的幾節將介紹為 Power 架構構建 apache httpd 所需的修復程序。
交叉編譯器經驗
編寫本文時,我使用的交叉編譯器版本是一個僅供 IBM 內部使用的版本,它專為修復我在測試期間遇到的一個錯誤而構建。讀者可以下載 AT 7.0-5 版,它是最新的交叉編譯器(在發表本文時),擁有接下來的幾段中描述的錯誤的修復程序。
在我嘗試交叉編譯 apr-1.5.1 源代碼發行版時,我看到了以下編譯器消息。
"sorry - this program has been built without plugin support"

按照我在互聯網上搜索可能的幫助和解決方案的建議,我找到多個鏈接提到編譯器需要使用 「plugin enabled」 選項來構建。我向 toolchain 支持小組報告了此問題,toolchain 維護人員很快就回復了我,為我提供了一個使用 plugin enabled 選項構建的修改版本。請注意,toolchain 的交叉編譯器和原生編譯器版本都需要使用 plugin enabled 選項構建。我能夠在獲得擁有該修復程序的 toolchain 版本後繼續工作。
這是我使用 PowerLinux toolchain 的第一次經歷。
交叉編譯 httpd 2.4.3
要交叉編譯 Apache httpd,需要使用另外 3 個包。它們是:apr、apr-util 和 pcre。找到下載最新包的位置後,開始使用 toolchain 交叉編譯器在 x86 伺服器上構建它們。
我構建 apr-1.5.1 時遇到的問題是構建 gen_test_char.o 模塊。請參閱 ASF Bugzilla – 錯誤 51257 了解有關的更多細節。我修改了 Makefile.in 文件(如下所示)並運行 buildconf 腳本,以便將更改包含在配置腳本中。
對 Makefile.in 的修改如下所示:
[root@stgisv240 apr-1.5.1]# diff -u Makefile.in ../../apr-1.5.1/Makefile.in
--- Makefile.in 2014-03-17 10:10:26.000000000 -0500
+++ ../../apr-1.5.1/Makefile.in 2014-07-03 13:36:11.125013781 -0500
@@ -46,7 +46,6 @@

CLEAN_TARGETS = apr-config.out apr.exp exports.c export_vars.c .make.dirs build/apr_rules.out tools/gen_test_char@EXEEXT@ - tools/gen_test_char.o tools/gen_test_char.lo \
include/private/apr_escape_test_char.h
DISTCLEAN_TARGETS = config.cache config.log config.status include/apr.h include/arch/unix/apr_private.h @@ -132,10 +131,9 @@
make_tools_dir:
$(APR_MKDIR) tools
-OBJECTS_gen_test_char = tools/gen_test_char.lo $(LOCAL_LIBS)
-tools/gen_test_char.lo: make_tools_dir
-tools/gen_test_char@EXEEXT@:$(OBJECTS_gen_test_char)
- $(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS)
+tools/gen_test_char@EXEEXT@: make_tools_dir
+tools/gen_test_char@EXEEXT@: tools/gen_test_char.c
+ $(BUILD_CC) $(CFLAGS_FOR_BUILD) $< -o $@
include/private/apr_escape_test_char.h: tools/gen_test_char@EXEEXT@
$(APR_MKDIR) include/private
修改 Makefile.in 文件後,我運行 buildconf 來創建了一個新配置腳本。下一段將介紹用於配置腳本的參數和變數。順便說一下,我是根據其他嘗試在其他平台(比如 ARM)上交叉編譯 Apache httpd 及其組件的開發人員的建議,為配置腳本選擇配置參數的。
以下是我在 x86 伺服器上運行 apr-1.5.1 組件的配置腳本時,使用的參數和環境變數。
# Config script using Power Linux toolchain on x86
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local/apr --host=powerpc64-linux ac_cv_file__dev_zero=no
ac_cv_func_setpgrp_void=no apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
BUILD_CC=gcc make install
我在 Power 伺服器上了略加修改的相同發行版。請注意,用於 Power 伺服器的 PowerLinux toolchain 使用了具有類似命名的可執行程序,比如從原生 cpp 和 binutils 包安裝的 cpp 和 ld。修改腳本中的 CPP 和 LD 變數,如下所示。確保 Power toolchain 的路徑首先傳入您的 PATH 環境中。
以下是我在 Power 伺服器上運行 apr-1.5.1 的配置腳本時使用的參數和環境變數。
# Config script using PowerLinux toolchain on Power
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=cpp # Note the difference
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=ld # Note the difference
STRIP=powerpc64-linux-strip
#CFLAGS="-mcpu=440fp -mtune=440fp --sysroot $SYSROOT"
#LDFLAGS=-L$SYSROOT/lib
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local/apr ac_cv_file__dev_zero=no
ac_cv_func_setpgrp_void=no apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
ac_cv_struct_rlimit=yes
BUILD_CC=gcc make install
以下是我在 x86 伺服器上運行 apr-util-1.5.3 組件的配置腳本時使用的參數和環境變數。
# Configure script for apr-util-1.5.3 on x86
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local/apr --host=powerpc64-linux --with-
apr=/tmp/usr/local/apr ac_cv_file__dev_zero=no ac_cv_func_setpgrp_void=no
apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
以下是我在 Power 伺服器上運行 apr-util-1.5.3 組件的配置腳本時使用的參數和環境變數。
# Configure script for apr-util-1.5.3 on Power
BUILD_CC=gcc
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local/apr --host=powerpc64-linux --with-
apr=/tmp/usr/local/apr ac_cv_file__dev_zero=no ac_cv_func_setpgrp_void=no
apr_cv_tcp_nodelay_with_cork=no ac_cv_sizeof_struct_iovec=1
以下是我在 x86 伺服器上運行 httpd 組件的配置腳本時使用的參數和環境變數。
# Configure script for httpd 2.4.3 on x86
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local --host=ppc64 ap_cv_void_ptr_lt_long=no --with-
pcre=/tmp/usr/local/bin/pcre-config --with-apr=/tmp/usr/local/apr --with-mpm=worker--
with-apr-util=/tmp/usr/local/apr/bin/apu-1-config
以下是我在 Power 伺服器上運行 httpd 組件的配置腳本時使用的參數和環境變數。
# Configure script for httpd 2.4.3 on Power
CC_FOR_BUILD=gcc
CC=powerpc64-linux-gcc
CPP=cpp
AS=powerpc64-linux-as
#ASCPP=powerpc-apm-linux-gnu-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
#CXXCPP=powerpc-apm-linux-gnu-cpp
CXX=powerpc64-linux-c++
LD=/opt/at7.0-5-rc1/bin/ld
STRIP=powerpc64-linux-strip
#CFLAGS="-mcpu=440fp -mtune=440fp --sysroot $SYSROOT"
#LDFLAGS=-L$SYSROOT/lib
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local --host=ppc64 ap_cv_void_ptr_lt_long=no--with-
pcre=/home/usr/local/bin/pcre-config --with-apr=/home/usr/local/apr --with-mpm=worker--
with-apr-util=/home/usr/local/apr/bin/apu-1-config
交叉編譯 PostgreSQL 9.4.3
不同於之前構建 httpd 所需的源代碼發行版,我在交叉編譯 PostgreSQL 時未遇到問題。PostgreSQL 是使用以下配置腳本來構建的。
以下是我在 x86 伺服器上運行 PostgresSQL 的配置腳本時使用的參數和環境變數。
# Configure script for postgresql-9.3.4 on x86
CC=powerpc64-linux-gcc
CPP=powerpc64-linux-cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
D=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/tmp/usr/local --host=powerpc64-linux --without-readline --without-zlib
與 Apache 配置腳本一樣,您可以注意到針對 Power 伺服器 toolchain 使用了具有類似命名的可執行程序,比如從原生 cpp和 binutils 包安裝的 cpp 和 ld。修改腳本中的 CPP 和 LD 變數,如下所示。確保 toolchain 的路徑首先傳入您的 PATH 環境中。
以下是我在 Power 伺服器上運行 PostgresSQL 的配置腳本時使用的參數和環境變數。
# Configure script for postgresql-9.3.4 on Power
CC=powerpc64-linux-gcc
CPP=cpp
AS=powerpc64-linux-as
AR=powerpc64-linux-ar
RANLIB=powerpc64-linux-gcc-ranlib
CXX=powerpc64-linux-c++
LD=powerpc64-linux-ld
STRIP=powerpc64-linux-strip
export CC CPP AS ASCPP AR RANLIB CXXCPP CXX LD STRIP CFLAGS LDFLAGS CC_FOR_BUILD
./configure --prefix=/home/usr/local --host=powerpc64-linux --without-readline --without-zlib
結束語
toolchain 交叉編譯器的實際價值在於,開發人員可在他們熟悉的開發平台上(在大多數情況下是 x86)編譯和構建 Power Architecture 應用程序。從我們的用例中可以看到,toolchain 可生成像原生編譯的應用程序一樣高效地執行的二進制可執行程序和庫。而且,交叉編譯的庫與原生編譯的應用程序兼容。最後但同樣重要的是,交叉編譯的應用程序可在本地調試以及使用 gdb 調試器遠程調試。
PowerLinux toolchain 與在 x86 平台上使用原生 Linux toolchain 沒什麼不同。希望本文能讓讀者很好地了解 PowerLinux toolchain 的特性和功能。

『伍』 如何交叉編譯sqlite

一、首先到http://www.sqlite.org/download.html下載Linux版本的源碼:sqlite-autoconf-3130000.tar.gz。

二、解壓:tar xvzf sqlite-autoconf-3130000.tar.gz

三、進入解壓後的目錄:$ cd sqlite-autoconf-3130000

四、執行:./configure CC=/opt/poky/1.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc --host=arm-linux --prefix= /usr/tmp/

說明:CC賦值為嵌入式開發環境所使用的交叉編譯工具,--host指定軟體運行環境為arm-linux, --prefix指定源碼交叉編譯後生成文件的路徑。

五、執行 sudo make && make install

六、將在 /usr/tmp/lib 目錄下生成的 libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6三個so文件拷貝的,嵌入式開發環境的/lib/目錄 或者程序運行依賴的lib目錄下即可。

將/usr/tmp/bin 目錄下的 sqlite3 應用程序拷貝到嵌入式開發環境下就可以運行並創建資料庫了。

七、編譯程序 需要加上 -l sqlite3 這個鏈接選項。

『陸』 linux交叉編譯的問題,求高手解答

這個問題我也遇到過,你用的是ubuntu吧。。。
建議:使用ubuntu自帶的交叉編譯工具
安裝方法:sudo apt-get install gcc-4.6-arm-linux-gnueabi gcc-4.6-arm-linux-gnueabi-base
這樣你就可以使用交叉編譯命令了。
*如果是fedaro 可以使用yum search arm-linux- 來查找交叉編譯器的版本,找到適合自己下載即可。。。(注意下載後執行指令的路徑,因為在移植文件系統的時候會用到交叉編譯器的指令系統)

這樣說清楚了嗎?

熱點內容
androidactivity生命 發布:2024-04-27 07:33:48 瀏覽:84
win2008伺服器搭建網站 發布:2024-04-27 07:26:51 瀏覽:640
java的vector 發布:2024-04-27 07:05:00 瀏覽:204
舊電腦共享伺服器 發布:2024-04-27 06:32:21 瀏覽:339
java程序練習 發布:2024-04-27 06:24:00 瀏覽:438
sql30 發布:2024-04-27 06:22:10 瀏覽:55
怎樣防止sql注入 發布:2024-04-27 06:11:25 瀏覽:236
安卓為什麼不能登蘋果系統的游戲 發布:2024-04-27 06:11:23 瀏覽:601
編程日課 發布:2024-04-27 05:56:54 瀏覽:620
漏洞上傳工具 發布:2024-04-27 05:50:58 瀏覽:717