linux项目构建笔记

本文详细介绍了如何使用CMake和GCC进行项目构建和编译,包括设置安装目录、构建类型,以及解决链接库问题的方法。同时,还提供了设置Linux环境变量的多种方式,以确保程序能够正确找到所需的库文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构建开源项目常用cmake命令

mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/zmq-4.3.2 -DCMAKE_BUILD_TYPE=Debug ..

-DCMAKE_INSTALL_PREFIX //指定项目安装目录

-DCMAKE_BUILD_TYPE //指定项目构建类型为Debug或Release

make install后才会安装到指定目录

直接使用 gcc编译

gcc -g -Wall -fPIC -I /usr/local/zmq-4.3.2/include/ -L /usr/local/zmq-4.3.2/lib64/ -lzmq hwclient.c -o hwclient

其中:

  • -Wall    开启所有警告
  • -fPIC    编译动态库时,产生位置无关代码
  • -I    指定头文件目录
  • -L 指定库文件目录
  • -l 链接库,不需要前缀lib和后缀.a

错误./hwclient: error while loading shared libraries: libzmq.so.5: cannot open shared object file: No such file or directory

原因是没有找到链接库libzmq.so,相当于VS运行程序时没有.dll文件。

解决方法:

  1. 临时:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zmq-4.3.2/lib64/
  2. 永久,有root权限:
    echo /usr/local/zmq-4.3.2/lib64/ >> /etc/ld.so.conf.d/zmq.conf
    ldconfig -v
  3. 3.永久,无root权限:
    echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zmq-4.3.2/lib64/' >> ~/.bash_profile
    source ~/.bash_profile

方法1只适合当前shell临时使用。方法3只对当前用户有效。

LD_LIBRARY_PATH:指定链接库目录,相当gcc中的-L

ldconfig:会对ld.so.conf中的库创建链接。

方法3也是设置LD_LIBRARY_PATH,只不过会写到用户的配置文件。

source会在当前shell执行脚本

Linux设置环境变量

一、按照生命周期来分,Linux环境变量可以分为两类:
1、永久的:需要用户修改相关的配置文件,变量永久生效。
2、临时的:用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效。

二、按照作用域来分,Linux环境变量可以分为:
1、系统环境变量:系统环境变量对该系统中所有用户都有效。
2、用户环境变量:顾名思义,这种类型的环境变量只对特定的用户有效。

1. 在/etc/profile文件中添加变量(对所有用户有效,永久)

vim /etc/profile
export PATH=$PATH:/usr/local/zmq-4.3.2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zmq-4.3.2/lib64
source /etc/profile

2. 在用户目录下的.bash_profile文件中增加变量(对当前用户有效,永久)

vim ~/.bash_profile
export PATH=$PATH:/usr/local/zmq-4.3.2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zmq-4.3.2/lib64
source ~/.bash_profile

3.直接运行export命令定义变量(对当前用户有效,临时)

简单来说,“登录shell”执行的startup文件为~/.bash_profile,而“非登陆shell”执行的startup文件为~/.bashrc。

当报错找不到某个.so库的时候,就要设置LD_LIBRARY_PATH,当找不到可执行文件的时候就设置PATH。

永久配置库路径

方法1

#!/bin/bash

ldpath=`pwd`
echo $ldpath >> /etc/ld.so.conf.d/test.conf
ldconfig -v

方法2

vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zmq-4.3.2/lib64
source /etc/profile

两种方法都需要root权限。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值