C++ (Up)为ARM Linux Gnueabihf交叉编译时出现的许多问题
##########################################################################C++ (Up)为ARM Linux Gnueabihf交叉编译时出现的许多问题,c++,linux,gcc,cross-compiling,poco-libraries,C++,Linux,Gcc,Cross Compiling,Poco Libraries,########################################################################## (2021年6月18日)目前,所有问题都已解决,但下一个问题的帖子仍然开放,谢谢您的关注;) ########################################################################## 首先,我是这个网站的新手,如果我犯了初学者的错误,请原谅:) 然后,我的主题已经登上了许多主题的头版,但我
(2021年6月18日)目前,所有问题都已解决,但下一个问题的帖子仍然开放,谢谢您的关注;)强> ########################################################################## 首先,我是这个网站的新手,如果我犯了初学者的错误,请原谅:) 然后,我的主题已经登上了许多主题的头版,但我没有发现任何相似之处,或者主题非常古老 联系上下文: 我有一台Linux Debian Jessie ARMhf平板电脑(gcc版本4.9.2)
我有一台Linux Mint 19.1 Tessa x86_64个人电脑
我想交叉编译从PC到平板电脑的文件 问题描述: 马上就来 [更新]
- (2021年6月14日)第7个问题已解决未定义对Poco::Net的引用
- (2021年6月14日)6号问题已解决包含中标题的相对路径
- (2021年6月10日)问题5已解决定义库路径CMake
- (2021年6月9日)问题4已取消未找到libc.so.6
- (2021年6月8日)通过复制目标上的库并手动编译ARMHF 32位的Openssl 1.1.1,解决了第3个问题
- (2021年6月3日)问题2通过下载并更新符号链接后复制目标平台上的库来解决
- (2021年6月2日)通过复制目标平台上已存在的库,1号问题得以解决
- [已解决/问题编号7]:[错误]未定义引用的消息
-->对“Poco::Net::…”的未定义引用 - [已解决/问题编号6]:未找到
-->:没有这样的文件或目录 - [已解决/问题编号5]:为CMake定义库路径
-->如何定义要编译的库所在的文件夹 - [已取消/问题编号4]:[错误]libc.so消息:未找到
-->将pc中的libc.so.6放入平板电脑 - [已解决/问题编号3]:[错误]未找到带有libssl.so和lib crypto的消息
-->找到libssl.so.1.0.0(默认安装在平板电脑上),但未找到libssl.so.1.1 - [已解决/问题编号2]:[警告]带有wchat\u t的消息
-->像这个例子: - [已解决/问题编号1]:[错误]带有../lib/libexpaw.so的消息
-->已识别文件注释:未识别文件格式
->当我在一个终端ld/path/lib/library_name.so中执行此操作时,它显示它是一个ARM文件(ELF 32位),所以可以
在CmakeList中定义编译器(刚刚制作了cmakeccompiler/path/crosscompilation,对于C++也是如此) [更新](乔治·格拉万提到)我这样做了:
将libstdc++.so从工具链移动到目标
[更新](如Tsyvarev所述)它适用于测试,但我将创建一个工具链文件,如下所述:
将库从目标平台复制到源PC的/usr/local/lib文件夹
编译传递参数:
$g++-IincludePath--std=c++11-Llibpath-o filetestarm file.cc-lpocutil-lPocoXML-lpocjson-lPocoNet-lPocoFoundation
编辑ldconfig文件:
$nano etc/ld.so.conf.d/poco.conf
并添加我的libpath
一些想法。。。
不是真的
希望我能理解,希望你能帮助我,如果我理解正确,问题是你的程序找不到你的so 如果有适合目标平台的正确库,则应将它们移动到目标平台内的目录中。如果目录位于
路径
,加载程序应该能够找到您的库。如果它不在路径中
,则应设置LD\u LIBRARY\u路径
。例如:LD\u LIBRARY\u PATH=/PATH/to/libs\u dir./my\u prog
此外,来自图像的消息(版本“…”未找到
)也很重要。它们会导致一些可怕的碰撞。获得它们的原因是,目标上的libstdc++版本与编译时使用的libstdc++版本不同。您也可以通过移动libstdc++来解决这个问题。因此,从工具链到目标并设置LD\u LIBRARY\u路径请显示“编辑CMakeList”-不,这是交叉编译项目的错误方法。相反,请准备一份描述交叉编译的文档。有了适当的工具链文件,CMake会意识到