linux joe复制一行,Linux命令

pwd      查看当前路径

rm 文件名     删除文件

rm -rf 文件夹  删除文件夹

touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

ls -l    查看文件的详细信息,如大小等

gcc/g++

g++ main.cpp -o main

预编译,编译,汇编,链接生成执行文件main

g++ -c main.cpp

先编译不链接,生成文件main.o(编译的是单个文件,不管链接的库路径,当项目文件很多时很有用,提高效率不用每个都编译)。

g++ main.o -o main 链接,找唯一的main()函数,最终生成执行文件main

g++ -E main.cpp 预编译

g++ -E main.cpp>main.e

将预编译输出到main.e,便于查看。预编译将所有头文件、用宏替换拼到一个文件中,因为编译的时候只编译这一个文件

g++ -S main.cpp  只编译不汇编(生成文件main.s汇编码)

g++ -g main.cpp -o main_d

有调试信息的可执行文件相当于win的Debug版本

写程序:

int main(int argc, char *argv[])

argc 是 argument count的缩写,表示传入main函数的参数个数;

argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个;

例如:

#include

using namespace std;

void main(int argc,char *argv[])

{

for(int i=0;i

{

cout<

}

system("pause");

}

argv是指向指针的指针,main函数的第二个参数“char *argv[]“也可以替换为 “char **argv“,两者是等价的。

多文件编译

预编译的时候需要指定头文件的路径:

g++ main.c ../Person/Person.cpp -o main -I../Person

预编译过程需要头文件路径 , -I../Person指的是头文件所在的路径;

编译或链接过程(我不确定到底是哪个好衰)需要函数的定义,../Person/Person.cpp是头文件中的成员函数的实现

注:再多的文件也把文件是拼过来;也可以先生成.o文件在来链接。

动态链接库

1、生成名为Person的动态链接库文件libPerson.so

g++ Person.cpp -fpic -shared -o libPerson.so 命名必须以lib开头

df120faa084b9217c8164b526872310f.png

2、使用动态链接库文件

g++ Person.cpp -o main -I../Person 能找到头文件

g++ main.cpp -o main -I../Person -L../Person -lPerson

能找到头文件和动态链接库文件

-I../Person是头文件路径;-L../Person是指定libPerson.so路径(如果不指定默认去系统环境变量的lib库找);-lPerson是链接库名。

0e91a8c9a5a2897ae6e2c6e34b52acd3.png

注:在执行./main时,报错:

解决:方法1把动态链接库文件拷贝到系统的path路径里;

方法2如图,使用执行脚本的方式

执行脚本写 :

export LD_LIBRARY_PATH=../Person

最后,执行 ./main

也可以用ldd main 查看程序的链接情况。

补充:在使用opencv的时候出现了错误:

main.cpp:(.text+0x53):对‘cv::imread(cv::String const&, int)’未定义的引用

解决:这是链接器的错误。使用 pkg-config 的 –cflags 参数可以给出在编译时所需要的选项,而 –libs 参数可以给出连接时的选项

qiaoyunhao@ThinkPad:~/MyStudy/c_project/test$ g++ main.cpp `pkg-config --cflags --libs opencv` -o main

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值