日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

嵌入式linux段错误,在嵌入式Linux上使用C Std Lib时出现异常的段错误

發(fā)布時(shí)間:2024/9/27 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式linux段错误,在嵌入式Linux上使用C Std Lib时出现异常的段错误 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

通過(guò)一些研究后我可以看到,vivado是硬件開(kāi)發(fā)IDE [因?yàn)樗鼈兲峁┝艘粋€(gè)試用期 – 所以它是硬件開(kāi)發(fā),他們總是想要收費(fèi)].

如果您使用的是Xilinx的標(biāo)準(zhǔn)SDK板,則應(yīng)該預(yù)先配置所有內(nèi)容.否則,硬件設(shè)計(jì)師會(huì)生成一個(gè)具有Microblaze的硬件設(shè)計(jì).

從那時(shí)起,您可能必須使用petalinux來(lái)生成兼容的新引導(dǎo),內(nèi)核等圖像.

您可能需要從源代碼重建libstdc,但我會(huì)將其作為最后的手段.例如,不要打擾它,直到你有g(shù)db工作并有測(cè)試結(jié)果.

開(kāi)發(fā)指南顯示了如何調(diào)用gdb(例如):

在目標(biāo)系統(tǒng)上:

gdbserver主機(jī):1534 / bin / myapp

在開(kāi)發(fā)系統(tǒng)上:

petalinux-utils –gdb myapp后跟目標(biāo)遠(yuǎn)程192.168.0.10:1534

我已經(jīng)使用注釋對(duì)Makefile進(jìn)行了一些編輯.我已經(jīng)評(píng)論了一些非必要的選項(xiàng).請(qǐng)注意,我正在使用=運(yùn)算符逐漸構(gòu)建CFLAGS / CXXFLAGS

這里的基本思想是以最小的“標(biāo)準(zhǔn)”偏差進(jìn)行構(gòu)建.僅添加經(jīng)過(guò)驗(yàn)證的基本選項(xiàng)構(gòu)建和測(cè)試.逐個(gè)添加選項(xiàng)[每次重建和測(cè)試],直到找到導(dǎo)致問(wèn)題的選項(xiàng).

然而,我確實(shí)懷疑 – 共同 – 是一個(gè)問(wèn)題的根源.此外,在較小的程度上,我有點(diǎn)懷疑-Wl,– 根據(jù)需要

這些選項(xiàng)應(yīng)該有效嗎?當(dāng)然,但xilinx / microblaze不是沒(méi)有x86 ……

我添加了兩個(gè)命令行make變量:

DEBUG – 使用gdb生成調(diào)試

VERBOSE – 顯示構(gòu)建過(guò)程的所有內(nèi)容

例如,嘗試make< whatever> DEBUG = 1 VERBOSE = 1

CC = microblazeel-xilinx-linux-gnu-gcc

CXX = microblazeel-xilinx-linux-gnu-g++

CPPFLAGS ?=

CMFLAGS += -Wall -Werror

CMFLAGS += -fmessage-length=0

# compile for gdb session

# NOTES:

# (1) -gdwarf-2 may or may not be the the right option for microblaze

# (2) based on doc for -feliminate-unused-debug* petalinux/microblaze may want

# stabs format

ifdef DEBUG

CMFLAGS += -gdwarf-2

CMFLAGS += -O0

# compile for normal build

#else

CMFLAGS += -O2

CMFLAGS += -feliminate-unused-debug-types

endif

# NOTE: I used to use "@" on commands,but now I leave it off -- debug or not

# sure it's "ugly" but you can get used to it pretty quickly--YMMV

ifndef VERBOSE

Q :=

else

###Q := @

Q :=

endif

# let compiler/linker tell you _everything_:

# (1) configure options when tool was built

# (2) library search paths

# (3) linker scripts being used

ifdef VERBOSE

CMFLAGS += -v

LDFLAGS += -Wl,--verbose=2

endif

CMFLAGS += -fno-builtin

# NOTE: I'd _really_ leave this off as it may confuse c++ std as "<

# _M_insert (which is in the library,which is almost certainly _not_ using

# -fno-common)

###CMFLAGS += -fno-common

# NOTE: I'm also suspicIoUs of this a little bit because the c++ lib may have

# some "weak" symbols that the c library doesn't

###LDFLAGS += -Wl,--as-needed

# NOTE: this seems harmless enough,but you can comment it out to see if it

# helps

LDFLAGS += -Wl,--hash-style=gnu

# NOTE: an optimization only

ifndef DEBUG

LDFLAGS += -Wl,-O1

endif

CFLAGS += $(CMFLAGS)

CXXFLAGS += $(CMFLAGS)

# NOTES:

# (1) leave this off for now -- doesn't save _that_ much and adds complexity

# to the build

# (2) IMO,I _never_ use it and I erase/uninstall it on any system I

# administrate (or just ensure the build doesn't use it by removing it

# from $PATH)--YMMV

###XCCACHE = $(CCACHE)

# to compile

$(Q)$(XCCACHE) $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(CFLAGS) $< -o "$@"

# to link

$(Q)$(CXX) $(RELOBJECTS) $(LDFLAGS) $(EXT_LIBS) -o $(RELBINARY)

總結(jié)

以上是生活随笔為你收集整理的嵌入式linux段错误,在嵌入式Linux上使用C Std Lib时出现异常的段错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。