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 执行干净配置。
我最近安装了 vspkg
并尝试使用 libcurl
命令 vcpkg.exe install curl:x64-windows-static
尝试编译后,在链接阶段出现错误
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 执行干净配置。