Hi3516DV300芯片报错“ undefined reference to ×”

摘要:
最后,strncpy_ HiSilicon在库libsecurec中有自己的几个函数的实现,例如S。因此,基本数据库应该放在右侧。附加您自己的Makefile以避免忘记CC=arm himix200 linux gccCFLAGS=-Wall O-gINCLUDE=-I.I/include#可执行文件的名称TARGET=enJpeg#link libmpi。a和其他库文件LIBPATH=-L/Lb/LIBNAME=-lmpi live lupvqe ldnvqe lVoiceEngine lpthread lsecurec#正则表达式表示目录C文件中的所有文件,C_SRCS=$#第一行依赖项:冒号后面是依赖文件#第二行规则:$@表示目标文件,$^表示所有依赖文件,$˂表示第一个从属文件$:$$$$$-o./build/$@^#makeclean将删除所有。o和目标文件清理:rm-f./build/*

我在使用海思硬件接口的时候,用到了mpi库,然后Makefile里面链接了这个库,但是编译到了链接的时候报错了:

./lib//libmpi.so: undefined reference to `sem_post'
./lib//libmpi.so: undefined reference to `snprintf_s'
./lib//libmpi.so: undefined reference to `sincos'
./lib//libmpi.so: undefined reference to `HI_DNVQE_ReadFrame'
./lib//libmpi.so: undefined reference to `HI_VOICE_EncodeFrame'
./lib//libmpi.so: undefined reference to `atan2'
./lib//libmpi.so: undefined reference to `HI_UPVQE_Create'
./lib//libmpi.so: undefined reference to `HI_UPVQE_SetVolume'
./lib//libmpi.so: undefined reference to `sem_trywait'
./lib//libmpi.so: undefined reference to `acos'
./lib//libmpi.so: undefined reference to `HI_UPVQE_GetVolume'
./lib//libmpi.so: undefined reference to `HI_VOICE_DecReset'
./lib//libmpi.so: undefined reference to `HI_DNVQE_WriteFrame'
./lib//libmpi.so: undefined reference to `HI_DNVQE_Create'
./lib//libmpi.so: undefined reference to `sin'
./lib//libmpi.so: undefined reference to `HI_UPVQE_Destroy'
./lib//libmpi.so: undefined reference to `HI_UPVQE_GetConfig'
./lib//libmpi.so: undefined reference to `sem_getvalue'
./lib//libmpi.so: undefined reference to `sem_wait'
./lib//libmpi.so: undefined reference to `HI_VOICE_EncReset'
./lib//libmpi.so: undefined reference to `sem_init'
./lib//libmpi.so: undefined reference to `HI_UPVQE_ReadFrame'
./lib//libmpi.so: undefined reference to `memcpy_s'
./lib//libmpi.so: undefined reference to `tan'
./lib//libmpi.so: undefined reference to `HI_UPVQE_WriteFrame'
./lib//libmpi.so: undefined reference to `memmove_s'
./lib//libmpi.so: undefined reference to `pthread_join'
./lib//libmpi.so: undefined reference to `HI_VOICE_DecodeFrame'
./lib//libmpi.so: undefined reference to `pthread_create'
./lib//libmpi.so: undefined reference to `pow'
./lib//libmpi.so: undefined reference to `round'
./lib//libmpi.so: undefined reference to `log10'
./lib//libmpi.so: undefined reference to `HI_DNVQE_GetConfig'
./lib//libmpi.so: undefined reference to `sqrt'
./lib//libmpi.so: undefined reference to `sem_destroy'
./lib//libmpi.so: undefined reference to `memset_s'
./lib//libmpi.so: undefined reference to `strncpy_s'
./lib//libmpi.so: undefined reference to `HI_DNVQE_Destroy'

  这些信号相关的函数链接pthread库,HI_*相关的接口去文档查属于哪个库,或许我的文档跟当前开发板不匹配,我连续找了三个没找到,不过这么火的芯片别人肯定也用过,所以方案一直接上网搜该函数;方案二我有一份领导给的头文件和库文件,我到整个头文件里面能找到相应的函数,然后就去把名字差不多的库文件链接进去,果然编译通过了。还有要特别注意的是基础库要靠右侧。最后,strncpy_s等几个函数海思有自己的实现,在库libsecurec.so(或静态库libsecurec.a)里面,这个基础库要靠右侧放。

附上自己的Makefile吧,省得下次忘记了

CC       = arm-himix200-linux-gcc
CCFLAGS   = -Wall -O -g

INCLUDE  = -I ./include 
# 可执行文件的名字
TARGET   = encJpeg


# 链接 libmpi.a等库文件
LIBPATH  = -L ./lib/
LIBNAME   =  -lmpi -live -lupvqe -ldnvqe  -lVoiceEngine -lpthread  -lsecurec


#正则表达式表示目录下所有.c文件,
C_SRCS= $(wildcard ./src/*.c)

# 第一行依赖关系:冒号后面为依赖的文件
# 第二行规则:$@表示目标文件,$^表示所有依赖文件,$<表示第一个依赖文件
$(TARGET): $(C_SRCS)		
	$(CC)   $(CCFLAGS) $(INCLUDE)  $(LIBPATH) $(LIBNAME)  -o ./build/$@  $^


# make clean删除所有.o和目标文件
clean:
	rm -f ./build/* 
	



 

  

免责声明:文章转载自《Hi3516DV300芯片报错“ undefined reference to ×”》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇v-charts修改点击图例事件,legendselectchanged如何编写一个gulp插件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

第七章 Python 盒子:模块、包和程序

前戏部分 模块,用一堆(很多行)代码实现了某个功能的代码集合。 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来说,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。 其实模块只是有很多 Python 代码的一个文...

Linux-PAM认证模块

Linux-PAM认证模块         用户访问服务器的时候,服务器的某一个服务程序把用户的谁请求发送到PAM模块进行认证。对于不同的服务器应用程序所对应的PAM模块也是不同的。如果想查看某个程序是否支持PAM认证,可以用ldd命令进行检查: 例如:查看sshd是不是支持PAM模块认证: 由于在程序模块里链接了libpam.so.0 =<...

第一杯咖啡在Debian 上安装Java环境

blackdown 的jdk 总是比sun 慢了一拍,针对debian包更新太慢,非官方的java-package的生成的.deb不尽人意,一些常用的命令没有加入到path,本文主要参考debian java faq1、获取jdk.从sun的官方网站下载最新的jdk 1.5 update2, http://java.sun.com。注意,要下载解压版本。#...

Linux(Red hat)无网离线安装TensorFlow

文件下载 首先,下载想要安装的版本,目前最新的是1.8.0 根据你的python版本下载对应的whl文件,下载连接:https://pypi.org/project/tensorflow/#files。也可以下载历史版本:https://pypi.org/project/tensorflow/#history 尝试安装 pip install xxxx...

yolo接口

在文件yolo_v2_class.hpp中声明。 extern "C" LIB_API int init(const char *configurationFilename, const char *weightsFilename, int gpu); extern "C" LIB_API int detect_image(const char *file...

Maven 引用本地jar包启动正常 运行时报错

问题: 引用友盟OpenAPI的SDK时 , 拆分思想是 将模块单独放置在 一个模块中 , springmvc maven 管理的项目 ,所以在resources 中增加了lib 文件夹 用来存放第三方jar包 表现 在springmvc 中 引用对应的j 模块 与依赖关系 启动 异常 ,仔细查看后是jar包 错误 java.lang.NoClassDef...