CMake Error: failed to create symbolic link ‘libz.so.1‘: Operation not supported 链接问题分析,解决,libssh交叉编

大家可能有过这样的问题,有时候可能需要移植一些库源码交叉编译出arm架构的库,会出现库链接失败,这是为啥呢?
1,一般大家可能都是在windous下的虚拟机中去编译,源码的目录可能在共享文件夹下,我理解共享文件夹是挂载在fuse.vmhgfs-fuse系统,该系统是不支持符号链接的。
解决该问题,只需要把源码放在其他目录即可,如/opt/下。

下面拿我自己举个例子,我要在Linux arm 架构下搭建一个SSH服务器,所以需要移植libssh库来实现,而libssh库又需要zlib 库,所以我需要交叉编译出zlib 库。

步骤:
下载:
也可手动下载。
wget https://github.com/madler/zlib/archive/refs/tags/v1.2.11.tar.gz

配置:
cmake -DCMAKE_INSTALL_PREFIX=/opt/zlib/lib_output/
-DCMAKE_SYSTEM_NAME=Linux
-DCMAKE_C_COMPILER=/opt/cross_chain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
-DCMAKE_CXX_COMPILER=/opt/cross_chain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
-DZLIB_LIBRARY=/opt/zlib/lib_output/zlib/lib/libz.a
-DZLIB_INCLUDE_DIR=/opt/zlib/lib_output/zlib/include

编译:
报错的时候注意看路径在共享文件夹下:
root@jxh-virtual-machine:/mnt/hgfs/work/23-ssh_server/lib_source/zlib-1.2.11/build# make
[ 2%] Building C object CMakeFiles/zlib.dir/adler32.o
[ 5%] Building C object CMakeFiles/zlib.dir/compress.o
[ 7%] Building C object CMakeFiles/zlib.dir/crc32.o
[ 10%] Building C object CMakeFiles/zlib.dir/deflate.o
[ 12%] Building C object CMakeFiles/zlib.dir/gzclose.o
[ 15%] Building C object CMakeFiles/zlib.dir/gzlib.o
[ 17%] Building C object CMakeFiles/zlib.dir/gzread.o
[ 20%] Building C object CMakeFiles/zlib.dir/gzwrite.o
[ 22%] Building C object CMakeFiles/zlib.dir/inflate.o
[ 25%] Building C object CMakeFiles/zlib.dir/infback.o
[ 27%] Building C object CMakeFiles/zlib.dir/inftrees.o
[ 30%] Building C object CMakeFiles/zlib.dir/inffast.o
[ 32%] Building C object CMakeFiles/zlib.dir/trees.o
[ 35%] Building C object CMakeFiles/zlib.dir/uncompr.o
[ 37%] Building C object CMakeFiles/zlib.dir/zutil.o
[ 40%] Linking C shared library libz.so
CMake Error: failed to create symbolic link ‘libz.so.1’: Operation not supported
CMake Error: cmake_symlink_library: System Error: Operation not supported
CMake Error: failed to create symbolic link ‘libz.so’: Operation not supported
CMake Error: cmake_symlink_library: System Error: Operation not supported
make[2]: *** [CMakeFiles/zlib.dir/build.make:322: libz.so.1.2.11] Error 1
make[2]: *** Deleting file ‘libz.so.1.2.11’
make[1]: *** [CMakeFiles/Makefile2:93: CMakeFiles/zlib.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

解决:
把源码移入/opt/下编译:

root@jxh-virtual-machine:/opt/zlib/zlib-1.2.11/build# cmake -DCMAKE_INSTALL_PREFIX=/opt/zlib/lib_output/
-DCMAKE_SYSTEM_NAME=Linu

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值