ld.lld:错误:无法打开"libLIBCMTD.a":没有这样的文件或目录



我最近安装了vspkg,并试图使用vcpkg.exe install curl:x64-windows-static命令构建我的libcurlc++应用程序

在我尝试编译它之后,我在链接阶段得到了一个错误

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]: *** [CMakeFilestestEnv.dirbuild.make:140: C:/Users/Administrator/libtestEnv.dll] Error 1
mingw32-make[2]: *** [CMakeFilesMakefile2:82: CMakeFiles/testEnv.dir/all] Error 2
mingw32-make[1]: *** [CMakeFilesMakefile2: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)

任何想法如何解决这个问题与链接?也许有什么办法可以排除那些有问题的lib ?

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

最新更新