libcurl4-openssl-dev:已安装libcurl4-openssl-dev时无法安装armhf

时间:2018-01-11 18:36:43

标签: c++ arm cross-compiling debian-jessie

我在Debian Jessie 8.10 amd64上创建了一个c ++应用程序,它还需要以下库:

sudo apt-get install libssl-dev
sudo apt-get install libcurl4-openssl-dev

我还需要交叉编译armhf的源代码。所以根据这个非常有用的链接https://wiki.embeddedarm.com/wiki/Jessie_armhf_Cross_Compile,我给出了以下命令:

sudo apt-get install curl build-essential
su root
echo "deb http://emdebian.org/tools/debian jessie main" > 
/etc/apt/sources.list.d/emdebian.list
curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add -
dpkg --add-architecture armhf
apt-get update
apt-get install crossbuild-essential-armhf

一切都安装正确然后我也给了:

 sudo apt-get install libssl-dev:armhf
 sudo apt-get install libcurl4-openssl-dev:armhf

第一个命令成功执行。另一方面,第二个未能提供以下输出:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
libcurl4-doc:armhf libcurl3-dbg:armhf libidn11-dev:armhf libkrb5-dev:armhf libldap2-dev:armhf
librtmp-dev:armhf libssh2-1-dev:armhf pkg-config:armhf
The following NEW packages will be installed:
libcurl4-openssl-dev:armhf
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
23 not fully installed or removed.
Need to get 0 B/316 kB of archives.
After this operation, 863 kB of additional disk space will be used.
(Reading database ... 94032 files and directories currently installed.)
Preparing to unpack .../libcurl4-openssl-dev_7.38.0-4+deb8u8_armhf.deb ...
Unpacking libcurl4-openssl-dev:armhf (7.38.0-4+deb8u8) ...
dpkg: error processing archive /var/cache/apt/archives/libcurl4-openssl-dev_7.38.0-4+deb8u8_armhf.deb (--unpack):
 trying to overwrite shared '/usr/include/curl/curlbuild.h', which is different from other instances of package libcurl4-openssl-dev:armhf
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.7.0.2-5) ...
Errors were encountered while processing:
 /var/cache/apt/archives/libcurl4-openssl-dev_7.38.0-4+deb8u8_armhf.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

由于我在交叉编译程序方面相当新,有没有人知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

您没有做错任何事情。与多体系结构软件包相关的文件冲突。这是bug in the package

这里是https://wiki.debian.org/MultiArch/Hints

中对此类错误的解释
  

有问题的软件包标记为Multi-Arch:相同,但具有   不同架构的至少一个文件的版本冲突。   提示告诉文件名(或文件名的数量)和   有问题的架构(或架构数量)。最简单的   解决方法是删除Multi-Arch:相同的声明,但通常   可以通过将有问题的文件移至   每个架构的位置(通常是   / usr / lib / $(DEB_HOST_MULTIARCH)/)。对于* -dev软件包,多Arch:   相同的功能通常并不重要,因此删除是一个很好的开始   测量。

我只是遇到了同样的问题,对于某些软件包来说仍然是一个问题。在我的情况下, libcurl-openssl-dev 正在替换 / usr / bin / curl-config 二进制文件。

对我来说,当我需要交叉编译时,它需要从x64 / i386库中进行交换,但是我很清楚,可能并非每个人都可以。