娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月19日(星期四)

正在發生

2020年06月19日 | ARM學習筆記002之gcc-4.3.2編譯器不支持硬件除法運算的解決方

發布者:PeacefulSoul 來源: eefocus關鍵字:ARM  gcc-4  編譯器  硬件除法運算 手機看文章 掃描二維碼
隨時隨地手機看文章

一般如果gcc不能使用除法,make后的錯誤是:

每一個錯誤處都使用了除法。


我的makefile代碼如下:


CC      = arm-linux-gcc

LD      = arm-linux-ld

AR      = arm-linux-ar

OBJCOPY = arm-linux-objcopy

OBJDUMP = arm-linux-objdump


INCLUDEDIR := $(shell pwd)/include

CFLAGS := -Wall -O2 

CPPFLAGS   := -nostdinc -I$(INCLUDEDIR)


export CC LD AR OBJCOPY OBJDUMP INCLUDEDIR CFLAGS CPPFLAGS


objs := head.o init.o nand.o  uart.o  interrupt.o  main.o  lcd.o  lib/libc.a sdcard.o adc_ts.o rtc.o timer.o 


174.bin: $(objs)

${LD} $(LIBPATH) -T174.lds-o 174.elf$^ ${LIBPATH}

${OBJCOPY} -O binary -S 174.elf$@

${OBJDUMP} -D -m arm 174.elf > 174.dis


.PHONY:lib/libc.a

lib/libc.a:

cd lib;make ; cd ..


%.o:%.c

${CC} ${CPPFLAGS} ${CFLAGS} -c -o $@ $<


%.o:%.S

${CC} ${CPPFLAGS} ${CFLAGS} -c -o $@ $<


clean:

make  clean -C lib

rm -f *.bin *.elf *.o *.dis


解決的方法是找出gcc除法庫libgcc.a的位置,我的是在/usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4.3.2這個目錄下,在OBJDUMP = arm-linux-objdump和INCLUDEDIR := $(shell pwd)/include中間插入下面命令:


LIBPATH=-lgcc -L/usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4.3.2


說明:其實gcc編譯器是不支持除法的,它是通過軟件實現除法運算,只要我們的makefile文件中包含了-lgcc庫,就能使用除法了。


2013.11.12


今天在重新編寫arm程序時,在實現增量式PID算法的式子中,各個變量定義為static signed long int的,用GCC編譯鏈接時出現如下錯誤。

原因是:


交叉編譯器去編譯老版本的uboot會出錯:


/usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4.3.2/libgcc.a(_dvmd_lnx):In function `__aeabi_ldiv0': (.text+0x8): undefined reference to `raise'


原因是:


Uboot是個非GNU/Linux的程序,是個裸程序(bare-metal application);


而交叉編譯器arm-linux-gcc是GNU/Linux工具鏈,是可以正常編譯Linux內核等東西的,


但是去編譯非GNU/Linux的Uboot的話,就會出現:


當出現被0除的情況時,會調用__aeabi_ldiv0(即eabi版本的__div0),當在GNU/Linux系統中時,其會去觸發系統的SIGFPE,進而調用到對應的raise(3)函數。


而此處,由于Uboot不是Linux類程序,沒有對應的raise()函數,所以報錯找不到。



網上的解決方法是:


三種:


1.去用其他對應的配置(估計是用于指定是非GUN/Linux類程序的),重新編譯一個新版本的交叉編譯器,然后用新的非GNU/Linux的交叉編譯器,去編譯此舊版本的uboot,即可正常編譯


2.修改自己的uboot,加上對應的(隨便寫個空的)__aeabi_ldiv0或raise函數即可。


3.修改cpu/arm920t/config.mk文件中的


PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8

    -msoft-float

改為

PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8


參考:移植u_boot出現的問題


 解決u_boot交叉編譯出錯




2013.11.19


重裝了gcc編譯器后,遇到使用除法的地方,出現如下錯誤:


/usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4.3.2/libgcc.a(_dvmd_lnx.o): In function `__aeabi_ldiv0':


(.text+0x8): undefined reference to `raise'


參考點擊打開鏈接


     點擊打開鏈接2


    http://blog.csdn.net/yuanlu837/article/details/7958781




2013.11.20


解決之道:


在鏈接時鏈接libgcc.a


LDFLAGS += -L $(shell dirname `$(CC) -print-libgcc-file-name`) -lgcc


同時也要在代碼中加上raise函數,應該是除數為0時會進這個函數:


int raise(int signum)

{

    return 0;

}


(在main.c文件中加上這個函數)

參考http://blog.csdn.net/jijiagang/article/details/8983133


雖然編譯連接能通過,但除法還是沒有作用(當被除數是變量時)。

關鍵字:ARM  gcc-4  編譯器  硬件除法運算 引用地址:ARM學習筆記002之gcc-4.3.2編譯器不支持硬件除法運算的解決方

上一篇:ARM學習筆記020之_asm_、CPSR、SPSR、位置無關碼等問題
下一篇:ARM學習筆記001之arm-linux-gcc 4.3.2下載與安裝

推薦閱讀

科技新創Starship chnologies推出機器人送貨服務,承諾在2018年底前投入1,000臺機器人提供服務,日前宣布成功募得2,500萬美元,將用來擴展機器人送貨服務,更有效派遣其機器人團隊,帶來更強大服務。 據報導,Starship旗下機器人能夠在半徑2英里的范圍內提供送貨服務,必要時也能透過真人司機載送機器人到定點,再提供送貨服務。這些機器人沿著人行道...
作為一項引領新一代科技革命和產業變革的戰略性技術,眼下人工智能發展正飽受全球關注。各國紛紛發力人工智能技術,努力推動其與實體經濟的加速融合,相繼取得了顯著成果。其中,依靠先發優勢和強大實力,美國暫居人工智能的霸主地位,而借助政府、市場、企業等的不斷注力,中、歐、日等國家也在全力追趕。全球人工智能發展逐漸進入到了產業加速、市場壯大...
隨著世界上主要的國家和地區在碳排放和尾氣排放兩個方向上不斷收緊對汽車的要求,全球各個主流車企已開始建立電動汽車平臺化戰略,推出了一系列電動汽車開發平臺。電動汽車平臺從電動汽車自身產品特點,在工程設計上是圍繞純電動汽車的特性出發,改造了電動汽車設計方法,在生產上采用模塊化的方式,實現制造設備,生產工藝以及電池,電機,電汽車平臺可以...
6月18日,由中共常熟市委、常熟市人民政府主辦,常熟高新技術產業開發區、常熟國家大學科技園、長三角機器人產業平臺創新聯盟、上海機器人產業技術研究院常熟創新中心承辦的國際機器人產業合作高峰論壇在常熟會議中心順利召開。本次會議以“聚焦數字經濟,助力綠色發展”為主題,常熟市委副書記、市長焦亞飛,常熟市委常委、高新區黨工委書記王建國出席活...

史海拾趣

問答坊 | AI 解惑

技術教程:面向汽車應用的線性調整器與開關調整器的比較

多年來,人們一直預測低壓差線性調整器(LDO)要退出在汽車領域的應用。但是,LDO調整器持續生存著甚至茁壯成長,因為它們的價格便宜且使用方便。本文中,我將闡述LDO調整器的復雜性,考察市場上的最新進展(確實有一些進展),并分析隨著汽車電源需求 ...…

查看全部問答∨

《蝸居》里海萍對新人找工作的理解真經典啊

比較落伍,周末才開始下載了大名鼎鼎的《蝸居》看。由于沒時間,也只看了一集,對于買房難還沒什么體會,可海藻找工作時,她姐姐海萍對她的教導讓我這個過來人感覺真對啊。          具體的記不清楚了,大概是: & ...…

查看全部問答∨

44b0頭文件位聲明如何理解?

#define BIT_ADC                        (0x1) #define BIT_RTC                        (0x1…

查看全部問答∨

關于matrix鍵盤中#的問題

大家新年快樂! 我的平臺是pxa270+wince5.0. 現在鍵盤驅動遇到了一點小問題,請大家幫幫忙。 通常鍵盤上,shift+3應該是顯示#號,但是我目前要做的shift+3要顯示歐元符號,#被移到其他按鍵上去了。 我修改了鍵盤的影射結構,將原來#的位置用歐 ...…

查看全部問答∨

關于Vxworks的疑問

本人剛進公司,被分到做vxworks軟件,原來沒有接觸過vxworks,所以也不是很了解,請各位幫忙講解一下,主要是vxworks是做什么的,它的應用平臺,當前形勢,以及怎么去學,主要按那個方向去學習,如果將來想跳槽應該跳哪個方向的,謝謝哈^-^…

查看全部問答∨

LPC1114+MP3+數碼相框+電子書 原理圖

最近準備用LPC1114做個MP3+數碼相框+電子書,下面是初步設計的原理圖,希望大家看看,設計上有些什么問題?先謝謝了。。。 …

查看全部問答∨

在CCS4下新建Piccolo TMS320F28027怎么始終有錯誤不能進入DEBUG下

用自帶的例子是可以進入DEBUG,可是自己新建的就是有錯誤,請熟悉CCS4的進來講講那里設置要重點設置的?…

查看全部問答∨

zinc使用中的疑問,請斑竹高手回答

zinc6.1下,定義一個 zafstring *testString = new zafString();然后把testString  加到窗口中 ,在該 控件中輸入數據,比如 12345,用程序獲得該值  testString ->Text()為什么只能得到“1”,而不能得到整個字符串呢?有遇 ...…

查看全部問答∨

PWM波

本帖最后由 paulhyde 于 2014-9-15 08:53 編輯 單片機輸出PWM波的電壓幅值怎樣控制?是不是固定不變的呢?  …

查看全部問答∨

STM32實現漢字的輸入請教

怎么用STM32實現漢字的輸入與識別? 請各位大俠指點,謝謝!…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 昭苏县| 揭东县| 陈巴尔虎旗| 板桥市| 攀枝花市| 阿鲁科尔沁旗| 南平市| 堆龙德庆县| 资阳市| 克什克腾旗| 巴东县| 和田县| 壶关县| 兴国县| 垫江县| 东乡族自治县| 郸城县| 仪陇县| 大丰市| 郧西县| 乐至县| 巴塘县| 玛沁县| 策勒县| 鹤庆县| 榆林市| 乌鲁木齐市| 梓潼县| 织金县| 广安市| 许昌市| 婺源县| 岱山县| 崇明县| 库伦旗| 邯郸县| 镇安县| 沁阳市| 大名县| 宣汉县| 林甸县|