cl.exe is unable to create an executable file. C compiler test failed.

本文探讨了在使用Microsoft Visual Studio进行编译时遇到的cl.exe无法创建可执行文件及LINK致命错误LNK1104的问题。通过检查config.log文件,定位到kernel32.lib和ucrt.lib文件缺失,并提供了修改.bashrc中PATH环境变量的方法。

错误:

cl.exe is unable to create an executable file.
C compiler test failed.

具体错误要查看查看config.log。 

  • LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”

参考:

https://blog.csdn.net/quantum7/article/details/105393036

  • configure: line 974: cl.exe: command not found

.bashrc中:

export PATH=${PATH}:/C/'Program Files (x86)'/'Microsoft Visual Studio 14.0'/VC/bin/amd64

  • LINK : fatal error LNK1104: 无法打开文件“ucrt.lib”

 

D:\Mysoftware\share\cmake-4.0\Modules\CMakeTestCXXCompiler.cmake:73: error: The C compiler "D:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/BIN/x86_amd64/cl.exe" is not able to compile a simple test program. It fails with the following output: Change Dir: 'C:/Users/HeuCi/AppData/Local/Temp/QtCreator-eCzzSo/qtc-cmake-NkNrRaXM/CMakeFiles/CMakeScratch/TryCompile-nntpeh' Run Build Command(s): D:/Mysoftware/bin/cmake.exe -E env VERBOSE=1 nmake -f Makefile /nologo cmTC_91b2c\fast "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe" -f CMakeFiles\cmTC_91b2c.dir\build.make /nologo -L CMakeFiles\cmTC_91b2c.dir\build Building CXX object CMakeFiles/cmTC_91b2c.dir/testCXXCompiler.cxx.obj D:\Mysoftware\bin\cmake.exe -E cmake_cl_compile_depends --dep-file=CMakeFiles\cmTC_91b2c.dir\testCXXCompiler.cxx.obj.d --working-dir=C:\Users\HeuCi\AppData\Local\Temp\QtCreator-eCzzSo\qtc-cmake-NkNrRaXM\CMakeFiles\CMakeScratch\TryCompile-nntpeh --filter-prefix="娉ㄦ剰: 鍖呭惈鏂囦欢: " -- "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe" @C:\Users\HeuCi\AppData\Local\Temp\nm4879.tmp testCXXCompiler.cxx Linking CXX executable cmTC_91b2c.exe D:\Mysoftware\bin\cmake.exe -E vs_link_exe --msvc-ver=1900 --intdir=CMakeFiles\cmTC_91b2c.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests -- "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe" /nologo @CMakeFiles\cmTC_91b2c.dir\objects1.rsp @C:\Users\HeuCi\AppData\Local\Temp\nm48B8.tmp Visual Studio Incremental Link with embedded manifests Create CMakeFiles\cmTC_91b2c.dir/manifest.rc Create empty: CMakeFiles\cmTC_91b2c.dir/embed.manifest RC Pass 1: rc /fo CMakeFiles\cmTC_91b2c.dir/manifest.res CMakeFiles\cmTC_91b2c.dir/manifest.rc RC Pass 1: command "rc /fo CMakeFiles\cmTC_91b2c.dir/manifest.res CMakeFiles\cmTC_91b2c.dir/manifest.rc" failed (exit code 0) with the following output: no such file or directoryNMAKE : fatal error U1077: 鈥淒:\Mysoftware\bin\cmake.exe鈥 杩斿洖浠g爜鈥x
06-27
在使用 `aarch64-rockchip-linux-gnu-gcc` 编译 C 程序时,如果遇到“unable to create executable file”错误,通常与交叉编译环境配置、权限问题或路径设置有关。以下是可能的解决方案: ### 1. 检查编译器路径和工具链配置 确保使用的 `aarch64-rockchip-linux-gnu-gcc` 路径正确,并且工具链配置无误。可以参考以下方式设置 CMake 工具链文件: ```cmake set(CMAKE_C_COMPILER /home/forlinx/aarch64-buildroot-linux-gnu_sdk-buildroot/bin/aarch64-buildroot-linux-gnu-gcc) set(CMAKE_CXX_COMPILER /home/forlinx/aarch64-buildroot-linux-gnu_sdk-buildroot/bin/aarch64-buildroot-linux-gnu-g++) ``` 如果使用的是手动编译方式,确保命令中指定的编译器路径正确,例如: ```bash CC=aarch64-rockchip-linux-gnu-gcc ./configure --host=aarch64-rockchip-linux-gnu ``` ### 2. 确保目标平台的库文件可用 交叉编译时,编译器需要访问目标平台的库文件。如果目标平台的库路径未正确设置,可能导致无法生成可执行文件。可以尝试设置 `LD_LIBRARY_PATH` 以包含目标平台的库路径: ```bash export LD_LIBRARY_PATH=/home/ubuntu/RK3588/usr/lib:$LD_LIBRARY_PATH ``` ### 3. 检查临时目录权限 编译过程中,编译器会尝试在临时目录中生成可执行文件。如果当前用户对临时目录没有写权限,会导致“unable to create executable file”错误。可以通过以下命令检查和修改临时目录权限: ```bash ls -ld /tmp sudo chmod 1777 /tmp ``` ### 4. 确认编译器本身可执行 检查 `aarch64-rockchip-linux-gnu-gcc` 是否具有可执行权限。如果编译器不可执行,可能导致无法生成可执行文件。可以通过以下命令赋予可执行权限: ```bash chmod +x /path/to/aarch64-rockchip-linux-gnu-gcc ``` ### 5. 检查文件系统是否只读 如果编译目录所在的文件系统是只读的,编译器将无法生成可执行文件。可以通过以下命令检查文件系统挂载状态并重新挂载为可写: ```bash mount | grep /dev/sdX sudo mount -o remount,rw /dev/sdX /mount/point ``` ### 6. 使用 `--prefix` 指定安装路径 在配置编译环境时,确保使用 `--prefix` 指定正确的安装路径,例如: ```bash ./configure --prefix=/home/ubuntu/RK3588/usr --host=aarch64-rockchip-linux-gnu ``` ### 7. 检查磁盘空间 确保磁盘空间充足,编译过程中如果磁盘空间不足,也可能导致无法生成可执行文件。 ### 8. 查看详细错误信息 启用编译器的详细输出,以便更好地定位问题。可以通过添加 `-v` 参数查看详细的编译过程: ```bash aarch64-rockchip-linux-gnu-gcc -v -o test test.c ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳鲲鹏

能给阁下一点帮助,非常荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值