如何在Linux中使用C++编写库

如何在Linux中使用C++编写库

问题描述:

我正在用C++编写一个小应用程序,我对此有一些疑问。我基本上是一个Java开发人员,现在正在转向C++。如何在Linux中使用C++编写库

  1. 如果我使用像升压一些图书馆,卷曲等我可以使它无需安装客户端机器上运行(我的意思是这样,包括在Java项目中的所有库jar文件)

  2. 我已经在linux中安装了一些库或软件。之后,如果我输入终端,它会对软件进行排序。例如,PHP,安装它后,你可以从终端使用PHP。这个怎么用?我可以使用我的简单C++项目来做到这一点吗?

  1. 是的。您使用一个名为的进程,它将所有库链接成一个大的可执行文件,并将其链接到。在./configure脚本(来自autotools)中,您使用--enable-static标志。在构建程序时,使用-static标志。静态库是后缀为.a的库;共享库使用.so,有时使用版本号后缀)。

  2. PHP不是一个库,它是一种语言(即可执行文件),它提供了自己的命令行界面。您的C++可执行文件可以类似工作,您只需从cin(在<iostream>中)获取输入并将结果写入cout,并使用cerr获取错误消息。

你的标题问题,“如何使在C++库在Linux”(而不是使用库):您可以使用ar程序来几个.o文件链接到一个单一的.a库文件。您也可以使用ranlib来清理.a文件。请阅读man页面以了解这些命令的用法。

对于问题1,您希望将程序编译为静态可执行文件。 (只需将-static传给g ++)。它会使程序大得多,因为它需要包含通常保存为库的东西的副本。

对于问题2我很确定你的意思是在PATH中有一个程序。键入echo $PATH以查看当前计算机上的路径。如果您将程序安装在其中一个目录中,它将从任何地方运行。 (最有可能的是/usr/local/bin/

1)对你的Q1的回答是静态链接库的编译。例如用gcc编译器:

#gcc的-static myfile.c文件-o MYFILE

2)答案给你Q2被追加到$ PATH环境变量的可执行文件的绝对路径。例如,在Bash shell中:

#出口PATH = $ {PATH}:/ home/user中/ pathofexecutable

上述设置只为你做终端是暂时的。为了让你的机器上的所有终端都可以使用,可以将上面的导出命令添加到/home/user /。bashrc文件。