【Ubuntu】打包C++程序及导出依赖库lib

一、准备程序

程序打包的前提至少应在本地编译通过且可按预期完成执行过程

二、创建打包脚本

add_executable创建的可执行目标文件同级目录下新建export.py文件,内容为

可自行修改脚本路径,同时修改脚本中command路径,保证需要的文件可被查询到

import shutil
import os

outpath = "../export_lib"   # -- 设置依赖库lib输出路径
os.makedirs(outpath) if not os.path.exists(outpath) else None

command = "ldd ./xxx"   # -- xxx更换为要打包的可执行文件名
out_string = os.popen(command)
data = out_string.readlines()
data = [[data_.split()[0], data_.split()[2]] for data_ in data if len(data_.split()) == 4]
print(data)

for data_ in data:
        shutil.copy(data_[1], os.path.join(outpath, data_[0]))

执行命令python3 export.py,在上一级文件夹中生成export_lib文件夹,程序执行所需依赖库均会复制到该目录中

三、创建执行脚本

由于程序可能需要大量的参数输入,且执行时需要导入依赖环境,因此建议直接提供sh脚本供他人使用,以节省沟通成本,以下为参考示例

新建output文件夹,在其中放入

  • 所需输入的参数文件/文件夹:param1param2,…
  • 执行文件xxx
  • 上一步中生成的export_lib文件夹

然后在output内新建sh脚本run.sh,内容如下

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./export_lib/
./xxx \   # -- 可执行文件
./param1/param1.suffix \   # -- 参数一
./param2/param2.suffix \   # -- 参数二
...

如下图
在这里插入图片描述
执行命令bash run.sh,预期程序可正常执行,建议在别人的机器上或者虚拟机上测试一下

不同版本及不同的操作系统可能无法直接运行,Windows使用可参考Windows下通过VS将CMake工程打包发布exe

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 在C程序中调用源码安装的,在Ubuntu中通常需要进行以下步骤: 第一步,安装依赖:源码安装的通常依赖于其他的文件,因此在调用之前,需要确保已经安装了这些依赖。可以使用apt-get命令来安装缺失的依赖。 第二步,添加头文件路径:源码安装通常会将的头文件放置在指定的目录下,而程序需要通过包含头文件来使用的函数和数据结构。在C程序中,可以通过使用#include指令来包含头文件。因此,在编写C程序时,需要在开头添加如下指令:#include <library_header.h>,其中library_header.h是的头文件名。 第三步,链接文件:源码安装会生成文件,通常是以.so(动态链接)或.a(静态链接)的形式存在。而C程序在编译时需要将文件链接到生成的可执行文件中,以便程序可以调用其中的函数和数据结构。在gcc编译器中,可以通过使用-l参数来指定需要链接的。例如,如果文件名为library.so,则编译命令可以写为:gcc -o program program.c -llibrary。 第四步,编写调用代码:在C程序中,可以通过调用中的函数和使用中的数据结构来使用源码安装的。具体的调用方式和使用方法需要根据的文档来确定,通常会提供相应的示例代码。 因此,使用源码安装的需要先安装依赖,然后包含头文件,链接文件,并在C程序中编写相应的调用代码。以上就是在Ubuntu中在C程序中调用源码安装的一般步骤。 ### 回答2: 在C程序中调用通过源码安装的Ubuntu需要进行以下步骤: 1. 在编写C程序时,需要包含相应的头文件。这些头文件通常位于文件安装目录的include文件夹中。你可以使用命令"sudo find / -name <header_file.h>"来查找头文件的位置。 2. 链接文件。通过源码安装时,编译器不会自动找到并链接文件。你需要将文件的路径添加到链接器的参数中。在编译C程序时,你可以使用命令"gcc -o output_file source_file.c -I <library_include_path> -L <library_path> -l <library_name>",其中"<library_include_path>"是的头文件路径,"<library_path>"是文件路径,"<library_name>"是名。 3. 调用函数。通过上述步骤,你应该可以在C程序中使用函数了。你可以通过引用的头文件来调用的函数,头文件中定义了函数的接口。 总结起来,要在C程序中调用通过源码安装的Ubuntu,你需要包含头文件、链接文件,并调用函数。 ### 回答3: 在C程序中调用通过Ubuntu源码安装的,需要进行以下步骤: 1. 确认的安装路径:使用"dpkg -L"命令查看安装的路径。例如,如果安装了libxxx,可以使用命令"dpkg -L libxxx"查看其安装路径。 2. 在C程序中包含头文件:在C程序的开头,使用#include指令包含所对应的头文件。例如,如果安装了libxxx,需要在C程序中添加#include <xxx.h>。 3. 链接:在编译C程序时,需要将链接到程序中。使用"-l"选项指定需要链接的的名称。例如,如果安装了libxxx,需要在编译命令中添加"-lxxx"。如果的安装路径不在系统默认路径中,还需要使用"-L"选项指定的路径。 综上所述,使用Ubuntu源码安装的在C程序中调用的步骤主要包括确认的安装路径、包含头文件和链接。通过这些步骤,可以在C程序中成功调用使用Ubuntu源码安装的
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蝉鸣居士

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值