簡體   English   中英

為什么我不能鏈接到shaderc?

[英]Why can't I link against shaderc?

我有一個試圖使用shaderc的vulkan項目。

該庫已安裝在以下路徑下(Linux系統):

./libraries/shaderc/build/libshaderc

在此目錄中執行ls得到:

CMakeFiles                         shaderc_combined_shaderc_test
cmake_install.cmake                shaderc_c_smoke_test
CTestTestfile.cmake                shaderc_shaderc_cpp_test
libshaderc.a                       shaderc_shaderc_private_test
libshaderc_combined.a              shaderc_shaderc_test
libshaderc_shared.so               shaderc_shared_shaderc_cpp_test
libshaderc_shared.so.1             shaderc_shared_shaderc_private_test
shaderc_combined.ar                shaderc_shared_shaderc_test
shaderc_combined_shaderc_cpp_test

該庫隨附的文檔明確指出:

  1. 如果外部項目不使用CMake,則外部項目可以直接使用生成的庫。 shaderc/libshaderc/include應該添加到include路徑,並且build/libshaderc/libshaderc_combined.a應該鏈接。 請注意,在某些平台上,還應指定-lpthread

我嘗試使用make如下鏈接項目:

g++ -o "../build/VulkanEngine" obj/Debug/DebugCallback.o obj/Debug/Device.o obj/Debug/log.o obj/Debug/ImageViews.o obj/Debug/Instance.o obj/Debug/Pipeline.o obj/Debug/RenderPass.o obj/Debug/Surface.o obj/Debug/SwapChain.o obj/Debug/VkExtensionsStubs.o obj/Debug/GLFW_tools.o obj/Debug/main.o    -L../libraries/glfw-3.2.1/bin -L../libraries/glm/bin/glm -L../libraries/vulkansdk-linux/1.1.97.0/x86_64/lib -L../libraries/shaderc/build/libshaderc -lstdc++fs -lglfw -lglm_static-lvulkan -llibshaderc_combined.a

特別要注意參數-L../libraries/shaderc/build/libshaderc :和參數-llibshaderc_combined.a

如您所見,指定的鏈接路徑與安裝路徑匹配(libraries /包含了我的項目使用的所有第三方庫)。

但是鏈接器抱怨:

/usr/bin/ld: cannot find -llibshaderc_combined.a
collect2: error: ld returned 1 exit status
make[1]: *** [VulkanEngine.make:119: ../build/VulkanEngine] Error 1
make: *** [Makefile:30: VulkanEngine] Error 2

因此,我似乎以某種方式弄亂了道路,但我不知道如何。

-lname鏈接選項指導鏈接器在指定的( -Ldir )和默認庫搜索目錄中搜索文件libname.so (共享庫)或libname.a (靜態庫)。 如果找到它們中的任何一個,它將不再搜索目錄並將該文件輸入到鏈接中。 如果它在同一個搜索目錄中找到它們兩者,則它將首選libname.so

所以改變:

-llibshaderc_combined.a

至:

-lshaderc_combined

您還必須確保-lshaderc_combined在鏈接序列中出現在它依賴的任何其他庫之前之后依賴於它的任何目標文件或庫之后,否則鏈接可能會因未定義的引用錯誤而失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM