我在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)
由于我在交叉编译程序方面相当新,有没有人知道我做错了什么?
答案 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库中进行交换,但是我很清楚,可能并非每个人都可以。