ld.lld: error: could not open 'libLIBCMTD.a': No such file or directory

ld.lld: error: could not open 'libLIBCMTD.a': No such file or directory

我最近安装了 vspkg 并尝试使用 libcurl 命令 vcpkg.exe install curl:x64-windows-static

构建我的 c++ 应用程序

尝试编译后,在链接阶段出现错误

ld.lld: error: could not open 'libLIBCMTD.a': No such file or directory
ld.lld: error: could not open 'libOLDNAMES.a': No such file or directory
collect2.exe: error: ld returned 1 exit status
mingw32-make[3]: *** [CMakeFiles\testEnv.dir\build.make:140: C:/Users/Administrator/libtestEnv.dll] Error 1
mingw32-make[2]: *** [CMakeFiles\Makefile2:82: CMakeFiles/testEnv.dir/all] Error 2
mingw32-make[1]: *** [CMakeFiles\Makefile2:89: CMakeFiles/testEnv.dir/rule] Error 2
mingw32-make: *** [Makefile:123: testEnv] Error 2

我也尝试安装 curl 库 non-static 并且一切顺利,但我想将所有内容链接为一个库,所以这不是一个好的解决方案

我的CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(testEnv)

# remove names of functions and optimize
set(CMAKE_CXX_FLAGS "-nolibc -s -O3 -Os -fdata-sections -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -fuse-ld=lld")

set(CMAKE_CXX_STANDARD 17)

find_package(CURL CONFIG REQUIRED)


add_library(testEnv SHARED main.cpp)


target_link_libraries(testEnv CURL::libcurl)

#collect all needed libraries to run
target_link_libraries(testEnv -static)

关于如何解决链接问题的任何想法?也许有任何解决方案可以排除那些有问题的库?

mingw32-make

看起来您正在使用 mingw。考虑使用正确的 vcpkg 三元组,例如x64-mingw-static.cmake.

x64-windows-static 将使用已安装的 VS 工具链。

请注意,您还需要在 cmake 调用中设置 -DVCPKG_TARGET_TRIPLET=x64-mingw-static-DVCPKG_HOST_TRIPLET=x64-mingw-static。还要确保 cmake 执行干净配置。