File format not recognized, treating as linker script

问题背景:

    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的文件系统不一样,无法创建这个软连接的。

                

原文地址:https://www.cnblogs.com/leehm/p/13158430.html