No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS

错误代码:No architectures to compile for(ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=armv7armv7s)

xcodebuild 这个target的时候命令行报错

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 #define CUDNN_MAJOR 8 #define CUDNN_MINOR 9 #define CUDNN_PATCHLEVEL 7 -- #define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL) /* cannot use constexpr here since this is a C-only file */ (base) whyerwang@whyerwang-Lenovo-ThinkBook-16p-Gen-5:~/cudnn_samples_v8/mnistCUDNN$ cp -r /usr/src/cudnn_samples_v8/ $HOME cd ~/cudnn_samples_v8/mnistCUDNN make clean && make ./mnistCUDNN # 显示"Test passed!"即成功[^2] rm -rf *o rm -rf mnistCUDNN CUDA_VERSION is 12090 Linking agains cublasLt = true CUDA VERSION: 12090 TARGET ARCH: x86_64 HOST_ARCH: x86_64 TARGET OS: linux SMS: 50 53 60 61 62 70 72 75 80 86 87 90 nvcc warning : Support for offline compilation for architectures prior to '<compute/sm/lto>_75' will be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). test.c:1:10: fatal error: FreeImage.h: 没有那个文件或目录 1 | #include "FreeImage.h" | ^~~~~~~~~~~~~ compilation terminated. >>> WARNING - FreeImage is not set up correctly. Please ensure FreeImage is set up correctly. <<< [@] /usr/local/cuda/bin/nvcc -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -ccbin g++ -m64 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_86,code=sm_86 -gencode arch=compute_87,code=sm_87 -gencode arch=compute_90,code=sm_90 -gencode arch=compute_90,code=compute_90 -o fp16_dev.o -c fp16_dev.cu [@] g++ -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -o fp16_emu.o -c fp16_emu.cpp [@] g++ -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -o mnistCUDNN.o -c mnistCUDNN.cpp [@] /usr/local/cuda/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_86,code=sm_86 -gencode arch=compute_87,code=sm_87 -gencode arch=compute_90,code=sm_90 -gencode arch=compute_90,code=compute_90 -o mnistCUDNN fp16_dev.o fp16_emu.o mnistCUDNN.o -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib64 -lcublasLt -LFreeImage/lib/linux/x86_64 -LFreeImage/lib/linux -lcudart -lcublas -lcudnn -lfreeimage -lstdc++ -lm bash: ./mnistCUDNN: 没有那个文件或目录
最新发布
05-15
<think>好的,我现在需要帮助用户解决在Ubuntu 22上安装cuDNN后编译mnistCUDNN示例时出现的FreeImage.h缺失的问题。首先,我需要回忆一下用户之前的对话历史。用户之前询问了如何安装cuDNN,我提供了详细的安装步骤,包括版本验证、安装方法以及验证安装的步骤。现在用户遇到了编译示例时的错误,提示找不到FreeImage.h文件。 根据用户的当前问题,我需要确定FreeImage库在Ubuntu中的安装方法。FreeImage是一个开源的图像处理库,可能cuDNN的示例程序依赖这个库来处理图像数据,比如MNIST数据集中的图像。因此,用户需要安装FreeImage的开发文件,包括头文件和库文件。 首先,我应该检查Ubuntu的软件源中是否有FreeImage的包。通常,开发库在Ubuntu中会有对应的-dev或-devel包。用户提到的错误是编译时找不到FreeImage.h,这通常意味着头文件没有安装,或者安装的位置不在编译器的搜索路径中。因此,安装libfreeimage-dev包可能会解决这个问题。 接下来,我需要确认安装命令是否正确。在Ubuntu中,使用apt-get install命令来安装软件包,用户可能需要使用sudo权限。正确的命令应该是sudo apt-get install libfreeimage-dev libfreeimage3。这样不仅安装了开发所需的头文件和静态库,还安装了运行时需要的共享库。 安装完成后,用户需要重新编译示例程序。可能需要清理之前的编译结果(make clean)然后重新编译(make),以确保所有依赖都被正确链接。如果安装后仍然出现错误,可能需要检查头文件的位置是否在系统的包含路径中,或者编译器的参数是否正确指定了库的路径。 此外,用户提到之前使用不同的CUDA安装方式,比如deb(network)或者runfile,可能会影响依赖库的安装。不过,FreeImage是一个独立的库,应该与CUDA的安装方式无关,只要正确安装即可。 用户可能还担心安装过程中出现的其他问题,比如卸载旧版本的问题。不过在这种情况下,直接安装正确的包应该就能解决问题,不需要复杂的卸载步骤。如果用户之前尝试过安装但失败了,可能需要先卸载旧版本,再重新安装,但根据错误提示,更可能的情况是根本没有安装,所以直接安装即可。 最后,用户可能需要验证安装是否成功,可以通过查找FreeImage.h文件是否存在,或者尝试编译示例程序。如果编译通过并成功运行,说明问题已经解决。如果还有其他错误,可能需要进一步检查其他依赖项或者编译选项。</think>#### 解决FreeImage.h缺失问题的完整步骤 --- ### 一、安装FreeImage开发库 1. **安装核心依赖包**: ```bash sudo apt-get update sudo apt-get install libfreeimage-dev libfreeimage3 # 同时安装开发包和运行时库[^1] ``` - `libfreeimage-dev`:包含头文件(如`FreeImage.h`)和静态库 - `libfreeimage3`:提供运行时动态链接库 2. **验证头文件路径**: ```bash ls /usr/include/FreeImage.h # 应显示文件路径 ``` --- ### 二、修复MNIST示例编译环境 1. **清理并重新编译示例**: ```bash cd ~/cudnn_samples_v8/mnistCUDNN make clean # 清除旧编译残留 make # 重新编译(自动链接FreeImage库)[^1] ``` 2. **若仍报错,手动指定库路径**: ```bash # 在Makefile中添加链接参数 LDFLAGS += -lfreeimage ``` ```bash # 或通过编译命令直接指定 make LDLIBS="-lfreeimage" ``` --- ### 三、深度验证 1. **运行测试程序**: ```bash ./mnistCUDNN # 输出"Test passed!"即表示依赖完整 ``` 2. **检查动态库链接**: ```bash ldd ./mnistCUDNN | grep freeimage # 应显示libfreeimage.so链接路径 ``` --- ### 四、常见问题排查 | 现象 | 解决方案 | |-------|----------| | `make: Nothing to be done for 'all'` | 执行`make clean && make`强制重新编译 | | `undefined reference to FreeImage_*` | 确认`-lfreeimage`已添加到链接参数 | | `/usr/bin/ld: cannot find -lfreeimage` | 执行`sudo ldconfig`更新库缓存 | --- ### 五、FreeImage库关联原理 cuDNN示例程序通过`FreeImage`库加载MNIST数据集图片,其依赖关系如下: ``` mnistCUDNN ├── CUDA Runtime (libcudart.so) ├── cuDNN (libcudnn.so) └── FreeImage (libfreeimage.so) ``` 安装开发包后,系统会将头文件置于`/usr/include`,库文件置于`/usr/lib/x86_64-linux-gnu`,编译器自动识别这些标准路径。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值