問題背景:
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的文件系統不一樣,無法創建這個軟連接的。