189 8069 5689

Linux命令-创新互联

pwd      查看当前路径
rm 文件名     删除文件
rm -rf 文件夹  删除文件夹

成都创新互联公司成立十余年来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供成都做网站、网站设计、网站策划、网页设计、域名注册、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,成都创新互联公司通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。

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

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开头

Linux命令
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是链接库名。
Linux命令
:在执行./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

问题解决!
pkg详解参考:
https://blog.csdn.net/a1059682127/article/details/80554729
https://blog.csdn.net/weicao1990/article/details/51933918
makefiles的书写参考其它https://www.cnblogs.com/Bw98blogs/p/7297007.html

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:Linux命令-创新互联
网站URL:http://jkwzsj.com/article/gdhee.html