linux系统环境变量问题记录

linux系统环境变量问题记录

遇到的问题

(1)在链接cuda代码时

g++ -o prog main.o  -lcudart

报错:usr/bin/ld :找不到-lcudart

(2)其实这个问题就是链接时编译器找不到libcudart.so这个动态库

(3)改成

g++ -o prog main.o  -lcudart -L/usr/local/cuda/lib64

就行了

但是我记得我在环境变量里面设置了/usr/local/cuda/lib64这个路径,按道理不需要再告诉编译器,它自己会去里面找

sudo vim ~./bashrc
export PATH="/usr/local/cuda-12.2/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64/"
export CUDA_HOME=/usr/local/cuda
source ~./bashrc
sudo ldconfig

因此我现在就要解决怎么 g++ -o prog main.o -lcudart 就可以链接

解决

查了很多资料,才发现我存在一个误区

我以为的 export LD_LIBRARY_PATH=“$LD_LIBRARY_PATH:/usr/local/cuda/lib64/” 会告诉编译器在链接时去在这里面找

(1)LD_LIBRARY_PATH环境变量在链接阶段不发挥作用,其实LD_LIBRARY_PATH环境变量是程序运行时发挥作用,比如程序运行时需要动态库时,会去里面找(动态链接时,动态链接库不会复制到程序里面,程序运行时,需要这个库了才会加载)

(2)LIBRARY_PATH环境变量在链接阶段发挥作用

因此我只需要增加下面的环境变量就解决了这个问题

sudo vim ~./bashrc
export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH

source ~./bashrc
sudo ldconfig

总结

LIBRARY_PATH环境变量在链接阶段发挥作用

LD_LIBRARY_PATH环境变量在程序运行时发挥作用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中,环境变量和文件系统是两个关键的概念,它们对于系统运行和用户的交互起着至关重要的作用。 **1. Linux环境变量**: 环境变量Linux系统中存储在内存中的配置信息,用于设置和传递应用程序运行时的参数或路径。常见的环境变量包括: - PATH: 定义了程序执行的搜索路径,当命令无法在当前目录找到时,会在PATH中指定的路径下查找。 - HOME: 存储用户的主目录,许多系统默认会使用这个目录作为默认的工作目录。 - USER/USERNAME: 当前登录用户的用户名。 - LANG/LANGUAGE: 显示和处理文本的语言环境。 **2. Linux文件系统**: 文件系统是操作系统用于组织和存储数据的方式,主要有以下几种: - **EXT(Extended)系列**:如EXT2, EXT3, EXT4,Linux的传统文件系统,支持日志记录和错误恢复。 - **FAT(File Allocation Table)**:适用于老旧的Windows和某些移动设备,不支持大文件和长文件名。 - **HFS+(Hierarchical File System Plus)**:苹果Mac OS的默认文件系统。 - **NTFS(New Technology File System)**:微软Windows系统的常用文件系统,支持长文件名和加密等高级特性。 - **Btrfs(Balanced File System)**:Linux内核支持的现代文件系统,提供更好的数据完整性、空间效率和文件系统操作性能。 **相关问题--:** 1. 如何查看Linux系统中的所有环境变量? 2. Linux系统中如何设置或修改环境变量? 3. 文件系统中,什么是inode,它在文件管理中起到什么作用?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值