?官方网站编译参考链接:
Paddle-Inference-Demo/source_compile.rst at master · PaddlePaddle/Paddle-Inference-Demo · GitHubhttps://github.com/PaddlePaddle/Paddle-Inference-Demo/blob/master/docs/user_guides/source_compile.rst# 一、环境准备
1、参照环境要求,准备gcc8.2,否则会碰到未知错误,比如
error: identifier "__builtin_ia32_sqrtsd_round" is undefined
安装参考链接:安装gcc8.2_u013948852的博客-CSDN博客_gcc82联网、root执行wget ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-8.2.0/gcc-8.2.0.tar.xztar -Jxvf gcc-8.2.0.tar.xz cd gcc-8.2.0/./contrib/download_prerequisitescd .. mkdir temp...https://blog.csdn.net/u013948852/article/details/100036039
2、切换gcc版本
Ubuntu16.04多个版本GCC编译器的安装和切换 - 小淼博客 - 博客园这几天在配置交叉编译ARM开发板的linux内核的过程中碰到了很多问题,其中包括了GCC版本太高等问题,由此我打算安装其他老的版本给我的Ubuntu16.04.实验过程如下: 官网的教程是最牛逼的,先https://www.cnblogs.com/uestc-mm/p/7511063.html3、由于我使用的proto版本是3.4.0,与官网上给定的3.1.0不一致,编译时产生如下问题:
third_party/protobuf/src/google/protobuf/stubs/port.h:263:5: error: this use of "defined" may not be portable [-Werror=expansion-to-defined] ?#if GOOGLE_PROTOBUF_USE_UNALIGNED ? ? ?^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ third_party/protobuf/src/google/protobuf/stubs/port.h:263:5: error: this use of "defined" may not be portable [-Werror=expansion-to-defined] third_party/protobuf/src/google/protobuf/stubs/port.h:263:5: error: this use of "defined" may not be portable [-Werror=expansion-to-defined] third_party/protobuf/src/google/protobuf/stubs/port.h:263:5: error: this use of "defined" may not be portable [-Werror=expansion-to-defined]
?通过对比发现,此原因在于proto3.4.0版本对.proto生成的third_party/protobuf/src/google/protobuf/stubs/port.h文件中有如下:
#ifdef GOOGLE_PROTOBUF_DONT_USE_UNALIGNED
# define GOOGLE_PROTOBUF_USE_UNALIGNED 0
#else
// x86 and x86-64 can perform unaligned loads/stores directly.
# define GOOGLE_PROTOBUF_USE_UNALIGNED defined(_M_X64) || \
? ? ?defined(__x86_64__) || defined(_M_IX86) || defined(__i386__)
#endif
#if GOOGLE_PROTOBUF_USE_UNALIGNED
?改成:
/*#ifdef GOOGLE_PROTOBUF_DONT_USE_UNALIGNED
# define GOOGLE_PROTOBUF_USE_UNALIGNED 0
#else
// x86 and x86-64 can perform unaligned loads/stores directly.
# define GOOGLE_PROTOBUF_USE_UNALIGNED defined(_M_X64) || \
? ? ?defined(__x86_64__) || defined(_M_IX86) || defined(__i386__)
#endif
#if GOOGLE_PROTOBUF_USE_UNALIGNED*/
#if defined(_M_X64) || defined(__x86_64__) || \
? ? defined(_M_IX86) || defined(__i386__)
因为proto3.1生成的port.h文件中只有如上语句,修改后即可编译通过。
二、修改CMakeList.txt
1、将CMakeList.txt中的github.com改成gitee.com;
2、将cmake文件夹下各个文件中的GIT_URL参数后面的名字改成xxx(个人创建的gitee仓库名);
3、将influence中需要用到的第三方库(连接到github的)都添加到xxx账户的gitee中;
4、由于pybind11会引用第三方子模块,会提示链接不上,因此本地修改仓库:
首先将pybind11仓库添加进gitee仓库中,然后开始做如下修改
//本地进行修改
git clone --recursive https://gitee.com/xxx/pybind11
cd pybind11
git submodule add https://gitee.com/xxx/clang-cindex-python3 tools/clang
//查看当前的状态(即修改了些什么)
git status
//将当前status中文件添加到暂缓区
git add .
//提交修改信息到本地仓库并添加备注
git commit -m "添加clang"
//将本地仓库推送到远程仓库
git push origin master
创建本地仓库tag
git tag v2.4.8
推送到远程仓库
git push origin v2.4.8
查看远程仓库的tag
git ls-remote --tags origin
参考链接:
Git中tag标签的使用_Dream It Possible-CSDN博客_git tag一、什么是tagtag是git版本库的一个标记,指向某个commit的指针。tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 ...这样的标签。tag感觉跟branch有点相似,但是本质上和分工上是不同的:tag 对应某次commit, 是一个点,是不可移动的。branch 对应一系列commit,是很多点连成的一根线,有一个H...https://blog.csdn.net/jdsjlzx/article/details/986549512020.6.17 gitee的修改与提交_学习uu学习的博客-CSDN博客_gitee 修改commit1、打开gitee bush,cd进入准备好的文件夹。2、git clone -b c7x https://-------.git (这里的地址必须是整个仓库的地址)3、cd进入本地仓库4、git config --global user.name "xxx" //自报家门5、git config --global user.email "---@qq.com"6、git status //查看当前的状态(即修改了些什么)6、git add...https://blog.csdn.net/qq_42200028/article/details/106807013git中submodule子模块的添加、使用和删除_guotianqing的博客-CSDN博客_git 子模块背景项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率。使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可。本文主要讲解子模块相关的基础命令,详细使用请参考man page。子模块的添加添加子模块非常简单,命令如下:git submodule add <url> <path>其中,url为子模块...https://blog.csdn.net/guotianqing/article/details/82391665?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.no_search_link&utm_relevant_index=1Git 修改后提交的命令总结 - YangJunwei版本库包含暂存区和分支http://yangjunwei.com/1506.html
将Paddle/cmake/external/pybind11.cmake修改为
SET(PYBIND_TAG v2.4.8)
即可编译通过。?
三、修改系统配置
|