當前位置:首頁 » 編程軟體 » arm編譯參數

arm編譯參數

發布時間: 2022-07-25 14:15:08

Ⅰ 敘說ARM 調試環境和ADS的使用實驗中設置項目相關編譯參數的原因

任何一種開發環境,都可以設置參數,
諸如預定義的宏,連接地址,頭文件所在包含路徑之類的東西
都可以被稱為工程項目的參數。

////////////////////////////////////////////////////////////////////////////////////////////////
就專業程度和實在程度而言,杭州巨立安(JulianTec)
是您在arm架構下學習嵌入式linux研發的上佳指導!

Ⅱ jdk nginx. redis 在arm和x86要分別編譯

一、注意openssl和pcre只需要把源碼壓縮,不需要單獨交叉編譯!
開始的時候不知道,傻傻的把這兩個庫弄半天把它們編譯過去了。誰知道nginx的--with-pcre和--with-openssl選項,指定的是這兩個庫源代碼的路徑,並非安裝路徑!nginx的編譯系統只會從/usr、/usr/local等少數幾個目錄查找是否有預編譯的pcre、zlib、openssl等庫。對於交叉編譯,直接把交叉編譯後的pcre等安裝在/usr、/usr/local顯然不合適,因此需要使用--with-pcre和--with-openssl指定源代碼的位置

二、交叉編譯nginx
在x64 linux上面編譯非常簡單的nginx,沒想到在交叉編譯的時候巨多坑。下面一個configure是編譯成功的配置

進入/usr/local/src目錄,創建nginx文件夾。入剛創建的nginx目錄,下載nginx的tar包,解壓,進入解壓生成的目錄,進行配置(後面有補充,建議通讀一遍)編譯安裝查找安裝路徑,在執行make編譯時,可以添加要編譯的參數,已安裝完成,比如我現在要新增 http_stub_status_mole 模塊參數,那麼我只要把該參數添加進去然後重新編譯即可,需要注意的是原先編譯過的參數也要加進來。
進入nginx的安裝目錄,因為我安裝的時候沒有添加任何參數,所以這里我只需要執行

我這里只需要這一個模塊,如果你安裝的nginx還使用其他的模塊,記得在上面的編譯命令中加上。
另外,這里只能 make 千萬別 make install,否則就覆蓋安裝了。

  • make完成後,在源碼目錄下會有一個objs目錄,objs目錄下就多了個nginx,這個就是新版本的程序了;

  • 然後將objs目錄下的nginx替換之前已經安裝過的nginx(建議將舊的nginx程序做下備份)


Ⅲ 關於ARM交叉編譯的問題

我也遇到你這樣的問題,你的解決了嗎?

Ⅳ GCC編譯器的參數與空格

按照INSTALL中的介紹,也是常用的方法,在configure的時候,加上–host=arm-linux,結果沒有實現我們要的效果,沒有將編譯器從默認的
gcc改成arm-linux-gcc,編譯器還是用的默認的gcc:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
./configure
–host=arm-linux
loading
cache
./config.cache
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(gcc
-O2
)
is
a
cross-compiler…
no
………………..
後來經過多次嘗試,最後受默認的
CFLAGS=-O2
./configure
進行配置所啟發,想到,是否可以將CC參數傳入到configure中,
結果證實,如果沒有自己的cache-file,即時加了對的CC參數,也還是無法傳入:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–host=arm-linux
loading
cache
./config.cache
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(gcc
-O2
)
is
a
cross-compiler…
no
checking
whether
we
are
using
GNU
C…
(cached)
yes
………………..
而且,如果CC參數放在configure後面:
./configure
CC=arm-linux-gcc
則不能識別:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
./configure
CC=arm-linux-gcc
configure:
warning:
CC=arm-linux-gcc:
invalid
host
type
………………..
參數傳遞必須像
CFLAGS=-O2
./configure
一樣,將參數設置放在configure的前面:
CC=arm-linux-gcc./configure
才能識別的。
必須要自己制定自己的cache-file
然後用./configure進行新配置,加上CC參數,才會即時生效,編譯器才可以變成我們要的arm-linux-gcc:
[crifan@localhost
lrzsz-0.12.20]$
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
–prefix=/usr/crifan/lrzsz
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
………………..
否則,就無法將我們的CC參數傳入了:
[crifan@localhost
lrzsz-0.12.20]$
CC=arm-linux-gcc
./configure
–prefix=/usr/crifan/lrzsz
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
)
works…
yes
checking
whether
the
C
compiler
(gcc
)
is
a
cross-compiler…
no
checking
whether
we
are
using
GNU
C…
(cached)
yes
………………..
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
loading
cache
cache_file_0
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
最好此處在加上–prefix=/usr/crifan/lrzsz,表示具體安裝到哪裡
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
–prefix=/usr/crifan/lrzsz
loading
cache
cache_file_0
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
………………..
其中,/usr/crifan/lrzsz是已經建立好的,已經存在的文件夾,上面這樣表示編譯後,
將生成的可執行文件安裝拷貝到那個目錄.

Ⅳ 有人知道怎麼把編譯路徑arm-linux-androideabi-4.6改成4.8的

1.將ndk中的arm-linux-androideabi-addr2line可執行文件的路徑加入配置文件~/.bashrc中,例如:exportPATH=$PATH:~/dlna/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin2.使配置生效:source~/.bashrc3.使用工具。例如:arm-linux-androideabi-addr2line-C-f-e~/workspace/DLNA/libs/armeabi/libctrlpt.so0003deb4其中,0003deb4為堆棧信息中pc的值。android應用崩潰的調試方法有兩種方法可以分析crash的堆棧信息1google提供了一個python腳本,可以從/p/android-ndk-stacktrace-analyzer/下載這個python腳本,然後使用adblogcat-d>logfile導出crash的log,使用arm-eabi-objmp位於build/prebuilt/linux-x86/arm-eabi-4.2.1/bin下面把so或exe轉換成匯編代碼,如:arm-eabi-objmp-Smylib.so>mylib.asm,使用腳本pythonparse_stack.py2直接使用NDK下面的arm-linux-androideabi-addr2line(D:\android-ndk-r8\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin\arm-linux-androideabi-addr2line.exe)例如:arm-linux-androideabi-addr2line-C-f-elibxxx.so0x#####(address)android調試工具addr2line使用補充使用addr2line追蹤自有動態庫(so文件)的bug,補充:解決出現??:0,沒法展示源代碼行數的問題在Android.mk文件中:Java代碼LOCAL_CFLAGS:=-D__STDC_CONSTANT_MACROS-Wl,-Map=test.map-g補充2個編譯參數-Wl,-Map=test.map-g.增加gcc警告和調試標志arm-linux-androideabi-addr2line-C-f-e/項目目錄/obj/local/armeabi/libfaa_jni.so0024362etip:1,注意調試文件的位置在obj目錄下,並非libs目錄下生成的so文件2,0024362e為出錯的機制位置還有:在jni/目錄下增加Application.mk文件,修改為debug模式,進行調試APP_OPTIM:=debug

Ⅵ 如何編譯arm上運行的qt2可執行文件

編譯好的QT的程序,一般會有幾個.CPP\.h文件,這么多的文件我們要怎麼樣編譯。首先,我們需要安裝QT版本的庫,一定要注意,這個庫文件一定和開發板上的是同一個庫。我們假設這個庫名字叫qtembed450-arm。以下步驟一定要注意:

1.安裝目錄一定要在「/usr/local/」下;

2.安裝成功後,這步非常關鍵,一定要設置環境變數,而且,我們要設置三個環境變數,這樣做有三個目的:①可以在任何路徑下用庫里的命令②編譯時候可以指定編譯規則為arm-linux-g++③編譯時候可以指定到所需要的庫文件。那麼安裝後,輸入一下命令:gedit /root/.bashrc.這個命令執行後就進入到設置環境變數的地方,我們要加入以下三個環境變數的設置:
export PATH=$PATH:/usr/local/qtembed450-arm/bin
export LD_LIBRARY_PATH=$LD_LTBRARY_PATH:/usr/local/qtembed450-arm/lib
export QMAKESPEC=/usr/local/qtembed450-arm/mkspecs/default

以上設置非常的重要,非常的關鍵。呵呵,先照著設置,具體原因我會細談。注意,我編譯用的很重要的qmake-arm 命令,就在/usr/local/qtembed450-arm/bin下,可以打開看看哦!環境變數設置好後,用which qmake-arm 命令來確認下是否成功,呵呵。

3.准備工作做到這里,算是進行一半了,哎,真累啊!還要接著寫呢。接下來我們要把我們的編譯好的QT程序的文件夾打開,把裡面的 .CPP/.h文件拷貝出來,新建立一個文件夾;

4.把以上的文件里的.cpp .h文件復制後新建立一個文件夾。

5.新文件夾建立後,在linux終端中進入到該文件夾所在目錄下,執行這個命令:qmake-arm -project命令,千萬注意,-project 和arm之間一定要有空格啊!該命令執行後,會生成一個.pro文件,緊接著呢,執行qmake-arm命令,該命令執行後呢,會生成一個Makefile文件,這步很關鍵哦,沒有這步就不會有Makefile文件,一般在這步會出現很多錯誤,就是庫沒有發現之類,這個時候,一定要檢查前面的步驟,仔細檢查看是否是錯誤。我們這個時候打開Makefile文件看一下,會發現,裡面的編譯已經變成arm-linux-g++。這個時候,就踏實,接下來怎麼辦?還用問嗎,直接make下就好了,哈哈,簡單吧!看到上面的qtmyjpg文件了嗎?這個是可以在開發板上運行的哦!接下來不用我說了吧,直接發送到開發板上執行,可以看到圖片嘍!

6.下到開發板上之後呢,通常會發現沒有許可權,執行chmod +x qtmyjpg 就可以了,但是注意,要執行這個qtmyjpg文件,一定要這樣輸入命令:./qtmyjpg -qws為什麼需要加這個參數呢?很簡單,你不加執行時會出現錯誤原因,自己看下吧,哈哈!

7.一般這個時候觸摸屏需要矯正。進入「/usr/tslib/bin/」,查看裡面的文件,有一個「ts-calibrate」文件,執行這個文件,./ts-calibrate 後,可以看到LCD屏幕上出現十字點,用觸摸筆點一下就可以,至此,整個QT在LCD上顯示整理完畢,花了我半下午時間加上對曹老師的請教,終於完成,嘿嘿!趕緊試試哦!

Ⅶ 深度linux的arm-linux-gnueabihf-gcc編譯參數如何配

一般來說,交叉編譯工具是用於在一種架構的主機(例如x86)上,編譯另一種主機(例如arm)運行的程序,在這個編譯期間,需要用到的頭文件/庫,往往需要從一個叫目標文件系統(sysroot)的路徑開始查找。

sysroot里包含usr,lib,usr/lib usr/include等文件夾結構和必要的頭文件和庫,你理解為目標機器上的整個文件系統,搬到你這台電腦上,然後作為一個文件夾存在。

交叉編譯原則上不能用主機(host)的頭文件,

  • 這首先是因為編譯器在查找頭文件的相對路徑時,交叉編譯器會配置為查找目標平台架構的位置,和主機的gcc不一樣,這也是為什麼它去arm-linux-gnueabihf這個目錄去尋找的原因。

  • 其次主機和目標機的系統版本有差異,再加上處理器架構的差異,往往有很多兼容性問題,甚至有難以解決的編譯錯誤。

  • 如果一定要用本機的頭文件系統來湊合,那麼需要把所有的-I都列出來,即不僅需要-I/usr/include,還需要-I/usr/include/xxx,甚至要創建一些文件夾的符號鏈接指向你主機的這些頭文件文件夾。即使這些,往往也未必成功,有些頭文件不同的系統架構,會不完全一樣甚至缺失。

交叉編譯一般無法使用主機的庫(so)文件

  • 主機和目標機往往架構不同,庫完全不能使用

  • 可能遇到主機和目標機架構相同的情況,比如你在intel64上編譯一套運行在intel64位手機的程序,但是庫兼容性的問題仍然存在。

最後結論:你這個問題,如果你是為了另一套機器(比如arm開發板編譯),那麼需要搞一套目標機的文件系統才能順利編譯。

對了,目標文件系統需要編譯了python和dev頭文件/庫,好多嵌入式設備裁剪的很厲害,都不用python。

Ⅷ 關於ARM arm-linux-gcc編譯器的疑問

首先編譯器的選擇跟處理器相關,所以arm的處理器一般只能採用arm相關的編譯器。所以嚴格上來講,根據所採用的ARM晶元的不同而採用不同版本的編譯器也是對的,而且也建議這樣做。但是編譯器一般是向下兼容的,如果你的程序簡單,你用了老版本的編譯器編譯,當然也可以在新處理器下運行咯,我記得我用gcc編譯的程序,也可以在atmel9260的板子上運行呢。

熱點內容
c語言取隨機數 發布:2025-02-06 02:46:57 瀏覽:863
uc緩存的視頻卡住 發布:2025-02-06 02:17:05 瀏覽:144
解壓同學介紹 發布:2025-02-06 02:13:10 瀏覽:776
icsftp 發布:2025-02-06 02:12:59 瀏覽:325
ftp跨域上傳文件 發布:2025-02-06 02:09:22 瀏覽:822
非遞歸全排列演算法 發布:2025-02-06 02:06:45 瀏覽:551
vs反編譯dll 發布:2025-02-06 02:06:00 瀏覽:584
ubuntu設置ftp許可權 發布:2025-02-06 01:54:07 瀏覽:599
奇瑞5哪個配置值得買 發布:2025-02-06 01:51:56 瀏覽:552
黑鯊手機哪裡看安卓版本 發布:2025-02-06 01:36:04 瀏覽:803