问题背景:
VirtualBox下linux虚拟机, linux下其它目录git clone下code,编译正常。
通过shared folders的方式,共享虚拟机linxu与win10主机之间进行文件传递。 配置好后,能正常共享文件,访问修改等操作。详细配置见前文:virtualBox6.1共享目录
Win10下路径c:\chared Linux下路径: /home/xxx/shared_linux
问题来了: 在共享目录下(whatever win10 or linux)git clone下来code,然后进行编译,提示错误:
libavfilter.so: file format not recognized, treating as linker script
libavfilter.so0: syntax error
总结:
同一份code,在linux其它目录编译正常,在虚拟机下的共享目录下编译就报错误。
原因:
查看正常能编译过的目录下:libavfilter.so,发现是一个软连接,link到libavfilter.so.7.57.100上,
切换到共享目录下,发现软连接不在了
这就明显了,由于共享目录,在win下由于文件系统不支持软连接,所以编译导致无法正常link到原始的库上,所以报错。
解决:
将正常能编译路径下的库,打个包tar, zip等,copy到共享目录,然后在win下使用win的解压缩工具解压开,即可。
注意:不能在linux的解压,会报错:can not create symlink, win和linux的文件系统不一样,无法创建这个软连接的。