移植到arm出错hidden symbol `__sync_fetch_and_add_4

在linux上,用的是arm的交叉编译工具,arm-none-linux-guneabi- 进行交叉编译一个自己写的网络库,网络库中用到了多线程,我使用的pthread_mutex_t,互斥锁,跟pthread_cand_t来保证线程同步,现在编译报错了,
第一个错误是hidden symbol `__sync_fetch_and_add_4' is referenced by DSO
第二个错误 final link failed:Bad value
第二个错误应该是第一个错误引起的吧,在网上查了一下有解决 移植到arm上出undefined reference to '__sync_sub_and_fetch_4的错 的帖子,是生成了一个静态库加进项目里面,解决了,我试了 但是没任何用处,
又继续找了一下,在https://stackoverflow.com/questions/25721750/hidden-symbol-sync-fetch-and-add-4-is-referenced-by-dso上找到过差不多的问题,下面回答给的答案是,平台不支持这种原子操作,并没给出解决方案,
hidden symbol ...... is referenced by DSO 网上对这种问题,有很多都是回答的是:错误原因主要是c++的一些符号是在运行时动态解析的
解决的办法是在那个hidden symbol前加
attribute ((visibility("default")))
但是__sync_fetch_and_add_4'这个是编译器自带的函数,能不能修改,如果可以,再哪儿修改?
有没有大神遇到过这个问题,有解决方案的?

0

1个回答

已经搞定了,就是加那个静态库,我加错位置了,应该加在我生成动态库那一步

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Ubuntu上交叉编译opencv及opencv_contrib并移植到ARM板之一
零、环境准备:编译环境:Ubuntu-14.04交叉编译工具链:arm-linux-gnueabi-4.5.1目标机器:粤嵌GEC210开发板S5PV210(Cortex-a8)opencv库:opencv-3.2.0(源码),解压至某一目录opencv_contrib库:opencv_contrib-3.2.0(扩展库源码),解压至某一目录cmake及cmake-gui编译工具:若未安装,请执行...
交叉编译出现,hidden symbol `__sync_fetch_and_add_4' is referenced by DSO
在linux上,用的是arm的交叉编译工具,arm-none-linux-guneabi- 进行交叉编译一个自己写的网络库,网络库中用到了多线程,我使用的pthread_mutex_t,互斥锁,跟pthread_cand_t来保证线程同步,现在编译报错了,rn第一个错误是hidden symbol `__sync_fetch_and_add_4' is referenced by DSOrn第二个错误 final link failed:Bad valuern第二个错误应该是第一个错误引起的吧,在网上查了一下有解决 移植到arm上出undefined reference to '__sync_sub_and_fetch_4的错 的帖子,是生成了一个静态库加进项目里面,解决了,我试了 但是没任何用处,rn又继续找了一下,在https://stackoverflow.com/questions/25721750/hidden-symbol-sync-fetch-and-add-4-is-referenced-by-dso上找到过差不多的问题,下面回答给的答案是,平台不支持这种原子操作,并没给出解决方案,rnhidden symbol ...... is referenced by DSO 网上对这种问题,有很多都是回答的是:错误原因主要是c++的一些符号是在运行时动态解析的 rn解决的办法是在那个hidden symbol前加rn__attribute__ ((visibility("default")))rn但是__sync_fetch_and_add_4'这个是编译器自带的函数,能不能修改,如果可以,再哪儿修改?rn有没有大神遇到过这个问题,有解决方案的?
android 移植 ffmpeg (二) 测试用例
在android 移植 ffmpeg (一)中已经对环境进行了设置。 这一章将重点讨论怎么在应用中加入ffmpeg组件。 所有测试都将在 Android Studio工具中进行。 测试例子源地址: https://github.com/roman10/android-ffmpeg-tutorial  本例子是在android-ffmpeg-tutorial01 基础上进行了简单调整。调整后的
基于stm32f103ve移植ucGUI简要步骤
1.移植准备 可以使用的工程文件以及下载好的uCGUI_v3.9源码 2.核心文件 核心文件包括以下文件 /Start/Config、/Start/GUI、 / Sample/ GUI_X文件夹中带操作系统应该拷贝GUI_X_uCOS.c,带操作系统应该拷贝GUI_X_uCOS.c,还需要移植触摸屏的话,还需要拷贝GUI_X_Touch.c文件。 (详情参见度娘:https://we
在嵌入式uClibc上移植valgrind
uClibc valgrind
qt移植到arm板上的步骤
qt应用程序移植到arm的全过程,一步一步做就行了,缺少相关软件网上都有,后期也会提供上来
嵌入式linux系统下gsoap环境搭建和移植
http://www.cnblogs.com/coveted/p/3492342.html
RT3070L无线网卡移植
RT3070L无线网卡移植 一、修改内核支持USB无线网卡 [*] Networking support  ---> [*]   Wireless  --->     cfg80211 - wireless configuration API  [*]   Wireless extensions sysfs files      Generic IEEE 802.11 Networki
Ubuntu上模拟ARM开发环境
有一个很明确的方向是我需要一个ARM版本的ubuntu系统,编译一些ARM平台库是十分方便的,其实这方面是有经验的,之前使用RK3188主板运行Ubuntu,编译一些库极为容易,至少依赖问题很好解决。而不再像两年前那样只使用一个交叉工具链来编译一个库,需要顺带编译很多依赖库。
entables移植问题
最近项目需要支持ebtables,从官网下载源码,交叉编译,然后放在设备上运行, 执行 ebtables -L 时出现问题,提示错误: modprobe: could not parse modules.dep The kernel doesn't support the ebtables 'filter' table.。 按照提示,应该是kernel模块没有加载导致, lsmod命令查
Java程序移植
一 在导航栏中右键选择Import     二 选择已存在的项目     三 选定一个项目     四 点击Finish完成项目导入     大小: 18.8 KB
i.MX6UL #3 - RTL8723-模块加载-连接wifi (终于可以摆脱网线了)
1.编译RTL8723 在我的嵌入式板子上(OKMX6UL)是板载了RTL8723BU芯片的,飞凌提供的okmx6ul_defconfig文件在编译内核的时候已经默认将RTL8723BU芯片编译为模块,这里没有实验单独的将RTL8723进行模块编译,只是单纯将编译好的模块从drivers/net/wireless/realtek/rtl8723BU 目录下拷出放到板子上 2.模块加载 这里我...
OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】
【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题3—共享库中嵌套库居然带路径【未解决】标签(空格分隔): 【Linux开发】移植opencv到tq2440一、下载opencv及cmake 1,download opencv_2.3.1 OpenCV-2.3.1a.tar.bz2 下载链接:http://opencv.org/downloads.html 2,downloa
交叉编译ncurses-6.0和minicom到ARM板
一、交叉编译ncurses-6.0         由于编译minicom依赖ncurses这个库,需要先编译ncurses,我选择的ncurses-6.0。 下边都是将下载的这两个安装包下载到minicom-ncurses 【1】开始: ./configure --with-shared --without-debug --with-ticlib CC=arm-none-linux-gn
udev和usb库移植到ARM脚本
有关udev和libusb移植到arm的执行脚本,前提是必须已经安装arm-linux-gcc交叉编译工具,两文件一个是执行脚本,一个是源代码清单及配置文件,供和我一样爱好嵌入系统的底层开发者参考,希望对大家有帮助。
开发环境 -- 编译移植iperf-3.1.1到ARM / 编译iperf到安卓 / 编译iperf到centos7
参考: http://blog.chinaunix.net/uid-730738-id-130438.html http://tigerjibo.blog.51cto.com/7718010/1297332/ 1.下载iperf-3.1.1 下载地址:http://download.csdn.net/detail/ivan804638781/9803894 2.arm-l...
NCNN移植ARM爬坑日志-caffe2ncnn 五
首先要确认.prototxt和.caffemodel文件是新版caffe文件,详情看爬坑一 进入ncnn-master/build/tools/caffe #./caffe2ncnn deploy.prototxt alexnet.caffemodel alexnet.param alexnet.bin 转换成功后,会在当前目录下看到alexnet.param和alexnet.bin两个
交叉编译并移植opencv到arm板遇到的坑
其实,所有的坑,都是自己未来图省事作出来的。重装系统后,仨小时解决了两天没搞定的问题。蛋疼~~~所以,这篇文章,就说了一个问题: 一定不要用很老的版本(比如tiny210开发板要求的Fedora9)开发嵌入式,否则会蛋疼死你~~~交叉编译看http://blog.csdn.net/guet_kite/article/details/78667175的文章就行了,按照他的版本进行编译,Ubuntu用...
移植OpenSSL加密软件到ARM
1.执行解压命令tar xvzf ./opensll-1.0.0s.tar.gz,解压后进入文件夹. 2.mkdir _install 创建一个_install文件夹 3.执行命令  ./config no-asm shared --prefix=/home/S5-Pro/Spring_1/opensll-1.0.0s/_install/(此处填绝对路径) 4.修改Makefile 将c
STM32F103移植FreeRTOS操作系统
一、建立必要的stm32开发工程 1、FreeRTOS文件夹下存放的是整个FreeRTOS系统的文件夹(也可直接从文件所在文件夹直接调用,加头文件时不要弄错就行)。 FreeRTOS的相应资料(source文件夹)网上很多,可以自行下载。(许多开发板买的时候也会送一些资料的) 2,添加相应文件 ​ 1、list.c queue.c task.c位于source根目录下; 2、P...
移植二维码识别库zbar到linux系统arm嵌入式设备
移植zbar到linux系统arm嵌入式设备目标:1.将zbar源码移植到linux arm or mips架构设备上 2.打开摄像头并运行zbar算法进行一维码,二维码识别。3.调试与优化一、下载zbar源码下载路径:http://zbar.sourceforge.net/download.html解压命令:tar jxvf zbar-0.10.tar.bz2 zbar源码貌似已经停...
valgrind简介以及在ARM上交叉编译运行
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。 Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O’Reilly开源代码奖。 Valgrind遵守GNU通用公共许可证条款,是一款自由软件。关于valgrind的具体使用网上有很多。这里记录一下在ARM上的交叉编译及使用过程中的一些问题。
caffe移植ARM爬坑日志-protobuf交叉编译
2、protobuf编译 >1  ./autogen.sh 出现错误:+ sed -i -e s/RuntimeLibrary="5"/RuntimeLibrary="3"/g;            s/RuntimeLibrary="4"/RuntimeLibrary="2"/g; gtest/msvc/gtest-md.vcproj gtest/msvc/gtest.vcproj
NCNN移植ARM爬坑日志-第一个例程运行 三
在terminal中输入 $wolf@wolf:~/Downloads/git clonehttps://github.com/Tencent/ncnn cd切换到NCNN目录 ***这步很重要,这时候需要修改ncnn的root目录下的CMakeLists.txt文件,需要将倒数几行的add_subdirectory(examples),取消注释,这样就是默认编译example,在后续编译之
Qt5.3移植到arm平台
很早以前写的记录,发上来供大家参考一下。有不对的地方欢迎大家指点。 Qt5.3移植到arm开发板过程 Qt creat: qt-creator-opensource-linux-x86-3.2.0-rc1.run Qt  SDK: qt-opensource-linux-x86-5.3.0-RC.run Qt 5.3源码: qt-everywhere-opensource
QT5.6.2配置和交叉编译
1.源码下载和解压 源码目录: (1)源码下载目录:/mnt/hgfs/windows_share/clock_project/qt_source/qt-everywhere-opensource-src-5.6.2.7z (2)创建工作目录,并解压 /home/aston/qt5.x_porting/qt5.6.2 (3)创建安装目录 /opt/qt5.6.2 2...
面向UCOS系统,PENDSV异常服务程序OS_CPU_PendSVHandler详细分析
老羊独家
让终端支持播放mp3,移植mp3解码库libmad和madplay到嵌入式linux
简单介libmad libmad简介 MAD (libmad)是一个开源的高精度 MPEG 音频解码库,支持 MPEG-1(Layer I, Layer II 和 LayerIII(也就是 MP3)。LIBMAD 提供 24 -bit 的 PCM 输出,完全是定点计算,非常适合没有浮点支持的平台上使用。使用 libmad 提供的一系列 API,就可以非常简单地实现 MP3  数据解
嵌入式hi3516-hi3518海思平台移植nginx-1.12.2
参考:http://blog.csdn.net/fish43237/article/details/40515897 正文:     先编译了linux下的nginx没有太大的问题。但是因为 nginx 对交叉编译的支持不太好。所以如果想 nginx 移植到其它环境中,会出现比较多的问题。本文 编译的是 最新的 stalble 版本,nginx-1.12.2, 目标是海思的hi3518
opencv移植全过程(含全部依赖包)
本资源主要讲移植opencv到arm平台,包括移植的全部依赖包,一分移植完全攻略,详细记录移植的环境配置和步骤,并记录每步编译过程会产生的错误以及解决办法,照着一步一步做就OK,享受opencv吧!如有错误也可以报上来,一起讨论~
Linux:pppd移植 交叉编译
4G拨号过程中,拨号失败,获取不到ip。 但是配置文件都是厂家提供的,应该没问题。所以决定自己移植pppd拨号工具试一下。 下载: https://download.samba.org/pub/ppp/ 解压编译: tar -vxf ppp-2.4.7.tar.gz cd ppp-2.4.7/ mkdir __install ./configure --prefix=$PWD/__insta...
在STM32CubeMX生成的工程中增加并编译RTX5源码
前言:STM32CubeMX是意法推出的基于STM32的一款强大的可视化开发软件,在常规的产品开发中,可以结合可视化的硬件配置来完成系统平台的初始化配置,选用一些中间软件包,如OS,FS等。RTX5是Keil公司打造的一款轻量型,实时,低延迟,高可靠,安全的操作系统,MDK开发环境本身集成了RTX5软件包。但STM32CubeMX中不包含RTX5组件包,并不支持RTX5组件包,这需要在STM32C...
[最详细的FAAC1.28交叉编译过程] AAC算法移植
折腾2个星期,就搞出这个 因为是要在hi3531开发板上做一次aac算法的编码,下面将在移植过程中遇到的坑记录一下 前提是你系统已经安装好你的交叉编译环境和已经下载了faac1.28 官方地址是 http://www.audiocoding.com/index.html 开发环境:Ubantu12.04.2 交叉编译器:hisiv300-linux-g++,hisiv3
移植UCOSII工程时,遇到Symbol OSDebugEn multiply defined错误的解决办法!
编译提示:..\OBJ\LED.axf: Error: L6200E: Symbol OSDebugEn multiply defined (by os_dbg_r.o and os_dbg.o). 解决 办法:debug那两个文件不需要添加,直接去掉即可!  
NCNN移植ARM爬坑日志-opencv交叉编译 二
NCNN-ARM移植爬坑日志-交叉编译opencv2.4.9详细过程及其遇到的问题
Python2.7.11在ARM平台上交叉编译步骤和方法
移植Python2.7.11到ARM平台,已验证成功。文档中包括相应的补丁。
Linux编译x86架构内核出现_stack_chk_guard未定义错误
背景android模拟器运行于virtualbox中,而virtualbox运行于x86架构的pc端,所以android及其Linux内核都编译成x86架构。当virtualbox的vt未开启的情况下android系统会出现各种问题,如arm库游戏不能运行,桌面平凡挂死重启。通过查看日志,都奔溃在了#00 pc 000183c6 /system/lib/libc.so (__get_thread
ffmpeg完美移植到arm
具体的交叉编译器根据自己的arm交叉编译器,修改~
cJSON移植缺少C库解决方法
一、最近由于项目需要用到json, 目标平台用C语言的,选择用CJson来解析及组json包。 二、cJson的编译非常简单,只需要下载下来的cJSON.c cJSON.h放到项目的工程中编译即可。但是项目所用的平台编译环境只支持简单的Simple C库,cJSON中用到的math.h float.h limits.h均无法使用,导致编译出错,无法找到头文件。 三、解决的方法看看cJSO...
grpc 安装 arm 与linux 安装说明与常见问题
grpc的相关代码,与运行需要的第三方库等,包含arm与linux的安装运行说明,里面简单实现了helloworld的代码。