繁体   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