Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ (Up)为ARM Linux Gnueabihf交叉编译时出现的许多问题_C++_Linux_Gcc_Cross Compiling_Poco Libraries - Fatal编程技术网

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的消息
    -->已识别文件注释:未识别文件格式
我所做的:
  • [信息]从PC交叉编译的Poco
  • 对于那些知道的人,我已经成功地交叉编译了Poco(1.10.1)
    ->当我在一个终端ld/path/lib/library_name.so中执行此操作时,它显示它是一个ARM文件(ELF 32位),所以可以

  • [问题编号3]编辑CMakeList和CMakeCache.txt
  • 定义libssl和libcrypto库所在的路径
    在CmakeList中定义编译器(刚刚制作了cmakeccompiler/path/crosscompilation,对于C++也是如此)

    [更新](乔治·格拉万提到)我这样做了:
    将libstdc++.so从工具链移动到目标

    [更新](如Tsyvarev所述)它适用于测试,但我将创建一个工具链文件,如下所述:

  • [问题1和2]在目标手臂平台上获取库
  • 从Debian软件包(libz.so、libexpatw.so…)下载目标设备上的文件
    将库从目标平台复制到源PC的/usr/local/lib文件夹

  • [问题编号4]将版本从PC复制/粘贴到平板电脑
  • 我把pc上的libc.so.6放在平板电脑上。 PC上的一个对应于交叉编译工具链中的一个,在/usr/lib/arm-linux-gnueabihf/文件夹中

  • [问题编号5]定义链接目录
  • 在cmakcache.txt中,我定义了OPENSSSL_库和CRYPTO_库

  • [问题编号6]手动更改路径
  • 手动将绝对路径更改为相对路径,但许多其他文件和依赖项都有相同的问题

  • [问题编号7]使用g++和许多参数编译
  • 编译传递参数,例如-IincludePath--std=c++11…
    编译传递参数:
    $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会意识到