1. 程式人生 > >交叉編譯 MSB 和LSB 問題

交叉編譯 MSB 和LSB 問題

                                                                    MIPS平臺gcc交叉編譯MSB和LSB問題

    最近在做mips平臺的工作,在交叉編譯軟體包的時候發現的問題現在記錄下來,當我們用linux命令file一個檔案的時候會出現如:

libiconv.so.2.5.0: ELF 32-bit LSB shared object, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, with unknown capability 0xf41 = 0x756e6700, not stripped

這樣的顯示,這個說明libiconv這個庫是32位,LSB MIPS 的共享庫檔案。

    這個LSB 和MSB 就是大端,小端的問題,在這裡我不講大小端原理,只說編譯問題。預設情況下mips-linux-gnu-gcc編譯出來的程式是MSB的,可是我需要的是LSB的 這時可以在編譯選項上新增 -EL (小端) -EB(大端)來控制編譯出的是大端還是小端程式。

    mips-linux-gnu-gcc -EL test.c -o test  這樣就可以編譯出 小端程式。

    要是大型程式,需要configure 和Makefile的可以在這樣configure:

    ./configure --host=mips-linux --build=i686 --target=mips-linux CFLAGS="-I/WORK/project/chwebkit/build/include" LDFLAGS=-L/WORK/project/chwebkit/build/lib CC="mips-linux-gnu-gcc -EL"

    把-EL 新增到 CC這個變數中 而不是CFLAGS中 原因是 新增到CFLAGS 中在編譯後ld的過程中可能會發生compiled for a little endian system and target is big endian這樣的錯誤,而把-EL 新增到CC中就不會有這個錯誤,到底是什麼原因導致的我不清楚,還請高人指點(估計是在一些子Makefile中沒用CFLAGS 這個變數,而 CC這個變數是必須的 猜測而已)。   有些人編譯ARM的交叉編譯 同理只不過編譯選項是-mbig-endian   -mlittle-endian.

相關推薦

交叉編譯 MSB LSB 問題

                                                                    MIPS平臺gcc交叉編譯MSB和LSB問題     最近在做mips平臺的工作,在交叉編譯軟體包的時候發現的問題現在記錄下來,當我們用l

MSBLSB,建議先看下面(其實就是大小端的問題)

轉自 https://blog.csdn.net/u010893262/article/details/52875068/ 最高有效位(MSB)  指二進位制中最高值的位元。在16位元的數字音訊中,其第1個位元便對16bit的字的數值有最大的影響。例如,在十進位制的15,38

GDB arm-linux交叉編譯移植使用方法(特別是對於正在執行的程式或者段錯誤的程式進行分析)

測試程式碼中的test1是用來定位堆疊段錯誤,Delay函式是用來定位程式阻塞,都可以用gdb定位出來,如下:  (1)測試程式執行時首先會有個段錯誤:./gdbtest & [[email protected] user0]$ [65334.020000] pgd = c3e14000 [

彙總(之四):交叉編譯工具鏈arm-none-linux-gnueabi-, Qt交叉編譯安裝移植,Qt桌面版編譯安裝,QTcreator安裝配置

4. QTcreator2.5.2安裝和配置 首先,從官網下載了qt-creator-linux-x86-opensource-2.5.2.bin檔案。 下面的安裝就比較簡單了,首先更改檔案屬性,使它可執行。 chmod u+x qt-creator-linux

debain實現交叉編譯gdbgdbserver

        最近工作比較忙,終於用休息時間了,就寫點東西吧, 在進入主題之前,我先聊聊歐洲盃義大利對德國的比賽(我不是一個足球迷,有一個朋友是一個足球迷,被他拉著看的),當巴神打進 第二個球時有一個鏡頭上有個球迷掉下眼淚,我為足球的魅力縮感動,也為這個偉大的運動所感到

深入瞭解MSBLSB

Most Significant Bit, Last(Least) Significant Bit 最高有效位(MSB) 指二進位制中最高值的位元。在16位元的數字音訊中,其第1個位元便對16bit的字的數值有最大的影響。例如,在十 進位制的15,389這一數字中,相當於

Ubuntu16.4學習之zedboard安裝交叉編譯環境交叉編譯流程

上一篇中按照《嵌入式系統軟硬體協同設計實戰指南》配置之後發現並不好用,這次按照《xilinx zynq soc與嵌入式linux設計實戰指南》進行配置一、基本概念:1、交叉編譯:在一個平臺上上生成另一個平臺上可以執行的程式碼。2、通過交叉編譯工具可以在CPU能力很強、儲存空間

關於MSBLSB的C語言操作

一串二進位制數從左往右數,最高位為MSB,最右為LSB;我們知道一個data是有unsigned和signed之分,以及32位或是64位等區別。這裡我以16位的有符號位二進位制數為例,用C語言實際操作一串二進位制數的有效位,實現MSB與LSB的排序的調換。 #include

MSB LSB是個啥玩意

MSB:最高有效bit位 LSB:最低有效bit位 之前寫的大小端只是說了一下一個word在四個位元組中是怎麼排列的,實際的儲存中,一個位元組內也是有bit序的,這個暫時先貼個連結,我正在看VMSA,沒時間鑽這個: http://blog.chinaunix.net/ui

esp8266~入坑sdk 3.0 IDF框架linux交叉編譯環境搭建

一、交叉編譯環境搭建步驟 1、安裝virtualbox、ubuntu虛擬機器共享windows資料夾,注!virtualbox最好裝在C盤,不然安裝虛擬工具經常會失敗。 2、新建共享目錄,掛載共享目錄到虛擬機器中 sudo mount -t vboxsf share /mn

Libusb交叉編譯移植

  Libusb交叉編譯和移植      某專案核心需要支援USB的相關操作,所以考慮移植Libusb庫      1、到官網下載最新的libusb原始碼(1.0.22)      2、解壓原始碼      3、進入解壓後的資料夾進行交叉編譯      5、將動態庫複製到當前系統的/lib下      6、l

linux平臺ffmpeg+h.264的本機移植交叉編譯

本文講解在ubuntu和arm平臺下的ffmpeg和x264相關庫的移植,最終實現使用ffmpeg進行H.264編碼。 1、原始碼下載: 2、編譯     2.1、yasm-1.2.0移植       PC可使用如下命令對yasm庫進行配置、編譯和安裝,庫

linux交叉編譯核心編譯

20181005記 一、交叉編譯arm-linux-gcc 由於嵌入式系統資源匱乏,一般不能像 PC 一樣安裝本地編譯器和偵錯程式,不能在本地編寫、編譯和除錯自身執行的程式,而需藉助其它系統如 PC 來完成這些工作,這樣的系統通常被稱為宿主機。 宿主機通常是 L

交叉編譯交叉工具鏈

一、交叉編譯簡介 1、什麼是交叉編譯 1.1 本地編譯         解釋什麼是交叉編譯之前,先要明白一個概念:本地編譯        我們之前常見的軟體開發,都是屬於本地編譯:在當前的PC下,x86的CPU下,直接編譯

樹莓派開發筆記(二):qt開發環境搭建:樹莓派qt編譯宿主機qt交叉編譯

樹莓派開發筆記(二):qt開發環境搭建:樹莓派qt編譯和宿主機qt交叉編譯前話        前面已經成功執行樹莓派,下面使用qt開發樹莓派產品。搭建樹莓派qt編譯環境(不推薦:開發編譯速度慢)        安裝樹莓派的桌面版本,可以直接配置qt環境,此種方法總是卡卡的,所

Centos下安裝Qt4.8.6交叉編譯qt-4.8.6的configure

1. 安裝必需的環境 安裝gcc和g++: [[email protected]]# yum install gcc [[email protected]]# yum install gcc-c++ 安裝Xlib: [[email pr

alsa libutils交叉編譯與移植

一、PC端使用alsa 1)PC上使用alsa時,正常的安裝alsa-lib和alsa-util即可,alsa-lib提供alsa音訊程式執行所需要的庫,alsa-util主要生成可執行程式,在程式執行時,在link裡新增-lasound即可使用 2)PC端使用alsa程式設計,具體過程可以參考網上的連結,

基於mini2440嵌入式linux上整合一套Domoticz智慧家居系統(七)交叉編譯paho.mqtt.embedded-c庫嵌入式linux樣例程式

本篇將把paho.mqtt.embedded-c官方的原始碼交叉編譯成資料包封裝庫和應用程式兩部分,並把樣例應用程式在mini2440上執行。 一、首先編譯MQTT協議包封裝庫: 解壓paho.mqtt.embedded-c-master.zip之後,進入目

Linux環境下openssl交叉編譯、安裝裁剪

最近的專案需求中依賴libcrypto和libssl庫,所以需要編譯安裝openssl0.9.8e,花了差不多一天的時間終於成功安裝和裁剪,現在總結並分享個人的方法,貼出來供大家參考和指正。 方法如下(不同的平臺要根據實際環境更改相應的編譯工具): 一、配置: ./conf

基於mini2440嵌入式linux上整合一套Domoticz智慧家居系統(四)交叉編譯OpenSSL、c-ares、e2fsprogsmosquitto

本篇主旨是編譯安裝mosquitto,其他的庫是它的依賴庫。後面我們交叉編譯的程式都將放置在主機的”/usr/local/arm/”目錄中,以區別主機本地的應用程式。 我的mimi2440的根檔案系統是PC端VMWare上linux中的nfs,這樣比較容易除錯