Linux程序設計01:開發工具和開發平臺

1.SecureCRT

? ?1.1SecureCRT支持SSH*(SSH1和SSH2),安裝的過程不在贅述

? ?1.2與SecureCRT相關的Linux命令

? ? ?rz和sz是Linux同windows進行ZModem文件傳輸的命令行工具。

? ? sz命令利用ZModem協議來從Linux服務器傳送文件到本地,一次可以傳送一個或者多個文件

? ? rz命令從本地上傳到Linux服務器。

? ? 要使用rz和sz命令需要查看是否 有lrzsz軟件包。

? ? ? ?

? ? ?如果沒有則需要利用yum進行安裝

? ?

? ?快捷鍵:復制命令:Ctrl+Insert,粘貼命令:Shift+Insert

2.gcc編譯四個階段

?預處理階段。去掉注釋,進行宏替換(#define 相關),頭文件(#include)包含等工作。
? gcc ?-E test.c -o test.i
編譯階段。編譯器將文本文件.i翻譯成文本文件test.s,他包含一個匯編語言。匯編語言程序中的每一條語句都以一種標準的文本格式確切的描述了一條低級機器語言指令。
它可以為不同的高級語言的不同編譯器提供通用的輸出語言。
gcc -S test.o -o test.s
?匯編階段。匯編器將.s翻譯成機器語言指令,吧這些指令打包成一種叫做可重定位目標程序的格式,并將結果保存在目標文件test.o中。
gcc -c test.c -o test.o ? ?
鏈接階段。包含各函數庫的入口,得到可執行代碼。
gcc ?test.c -o test.o ? ?

3.Linux文件后綴名

.c ? c源代碼
.C ?.cc C++源代碼
.h ?頭文件

4.gcc選項

優化:目標是使代碼性能更有,去掉冗余代碼。
-O(0/1/2/3)
gdb調試:-g(0/1/2/3)
提示警告:-Wall
將警告當成錯誤:-Werror
在命令中指定宏:-D
指定頭文件位置:-I
使用C版本:-std=c99等等

5.小常識

1.系統定義的頭文件路徑:
/usr/include
/usr/local/include
/usr/target/include
庫文件:
/lib
查看庫文件:ldd?
ldd ./test

2. ?編譯時默認鏈接 c 庫,如果要全用其它的庫,編譯時要用-l
例如:gcc o test test.c –lm -lc
其中m表示math庫,c表示c函數庫
3.命令行參數
選項:-l -a -i
如果命令行的選項很多,怎么來提取這些選項呢?不需要我們知道命令行參數的順序。此時應該首先提取命令工行參數列表。
getopt:短選項,只有一個字符
getlongopt:長選項,一個字符串
#include <unistd.h>
? ?int getopt(int argc, char * const argv[],?const char *optstring);?
一下全局變量配合getopt函數
extern char *optarg;
? extern int optind;
? extern int optopt;
? extern int opterr;
實際上,在命令行中,可以支持這樣命令輸入的信息:
?選項:一個選項一般完成不同的功能的操作。
?參數:在執行相應選項功能操作時輸入的信息。
?-a:選項:表示所有。
?-h host_id: h 就是一個選項,但 host_id 實際上是一個 IP,也就是 h 的參數。
為了識別命令行的輸入信息,第 1 個參數為 main 的 argc,第 2 個參數為 main 提供的 argv[],getopt
? ?函數第三個參數約定:
?(1)如果就是一個字符,表示某個選項。
?(2)如果一個字符后有 1 個冒號,表示選項后面一定要跟一個參數。參數可以緊跟選項或者與選
? 項相隔一個空格。
?(3)如果一個字符后有 2 個冒號,表示選項后面可有有一個參數,也可以沒有參數,在選項后的
? 參數一定不能跟它以空格間隔。
例如 getopt 函數第三個參數為以下值:
? ?“ab:c::d::”
? ?a 后面 沒有冒號,是一個選項。
? ?b 后面有冒號,其后的內容一定要有理解為參數。
? ?c 和 d 雙冒號,其后的內容可以有,也可以沒有,但如果有,則這個參數一定堅挨著。
? ?因此如下:
? ?./getopt –a –b host –chello –d world
? ?具體 getopt 怎么來解釋我們的選項和參數。
? 每成功執行一次,將返回當前的一個選項。并且
? extern char *optarg; //指向下一個要掃描的參數。
? extern int optind; //索引為下一個要處理的指針的下標。
? extern int optopt; //用于存儲可能的錯誤或不可知的信息
? extern int opterr; //opterr== 0,不將錯誤輸出的標準錯誤輸出設備。
長選項:這個選項由一個字符串組成,在選項很多的時候更容易記憶。getopt_long extern char *optarg; extern int optind, opterr, optopt; #include int getopt_long(int argc, ? ? char * const argv[], const char *optstring, //當前支持的短選項列表,同 getopt const struct option *longopts, //長選項列表信息 int *longindex); struct option { const char *name; ? ?//長選項名 int has_arg; //是否有參數 int *flag; int val; //返回值,短選項值 };?

例如期望當前進程支持以下選項方式:
短選項 長選項
-h --help
-o filename --output filename
-v --version
第三個參數:
ho:v
第四個參數
strcut option my_option=
{ {“help”,0,NULL,’h’},?
{“output”,1,NULL,’o’},?
{“version”,0,NULL,’v’}}

要求:
寫一個命令行選項解析的程序。支持以下功能:
(a) -a 選項(--all 長選項),后面可以跟參數
(b)-d 選項(--dir 長選項),后面不跟參數
(c)-h 選項(--help 長選項),后面不跟參數
(d)-o 選項(--output 長選項),后面必須跟一個參數


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385263.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385263.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385263.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

fork、vfork、clone

1. 概念 寫時復制技術最初產生于Unix系統&#xff0c;用于實現一種傻瓜式的進程創建&#xff1a;當發出fork( )系統調用時&#xff0c;內核原樣復制父進程的整個地址空間并把復制的那一份分配給子進程。這種行為是非常耗時的&#xff0c;因為它需要&#xff1a; 為子進程的頁…

Linux02進程內存管理

1.進程地址空間 1.1程序的結構與進程的結構 [rootlocalhost demo]# size testtext data bss dec hex filename 1193 492 16 1701 6a5 test 一個可執行程序包含三個部分&#xff1a; 代碼段&#xff1a;主要存放指令&#xff0c;操作以及只讀的常量數據例…

epoll

開發高性能網絡程序時&#xff0c;windows開發者們言必稱iocp&#xff0c;linux開發者們則言必稱epoll。大家都明白epoll是一種IO多路復用技術&#xff0c;可以非常高效的處理數以百萬計的socket句柄&#xff0c;比起以前的select和poll效率高大發了。我們用起epoll來都感覺挺爽…

劍指offer目錄

序號題目1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

基于升序鏈表的定時器

#ifndef LST_TIMER#define LST_TIMER#include <time.h>#define BUFFER_SIZE 64class util_timer;//用戶數據結構&#xff1a;客戶端地址、客戶端的socket、socket文件描述符、讀緩存和定時器struct client_data{sockaddr_in address;int sockfd;char buf[ BUFFER_SIZE ];…

SIGCHLD信號使用和注意事項

1.SIGCHLD簡介 SIGCHILD是指在一個進程終止或者停止時&#xff0c;將SIGCHILD信號發送給其父進程&#xff0c;按照系統默認將忽略此信號&#xff0c;如果父進程希望被告知其子系統的這種狀態&#xff0c;則應捕捉此信號。注意&#xff1a;SIGCLD信號與其長得非常相似。SIGCLD是…

08-圖7 公路村村通 (30 分

現有村落間道路的統計數據表中&#xff0c;列出了有可能建設成標準公路的若干條道路的成本&#xff0c;求使每個村落都有公路連通所需要的最低成本。 輸入格式: 輸入數據包括城鎮數目正整數N&#xff08;≤&#xff09;和候選道路數目M&#xff08;≤&#xff09;&#xff1b;隨…

【Leetcode】33. 搜索旋轉排序數組

假設按照升序排序的數組在預先未知的某個點上進行了旋轉。 ( 例如&#xff0c;數組 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 搜索一個給定的目標值&#xff0c;如果數組中存在這個目標值&#xff0c;則返回它的索引&#xff0c;否則返回 -1 。 你可以假設數組中不存在重…

08-圖9 關鍵活動 (30 分

假定一個工程項目由一組子任務構成&#xff0c;子任務之間有的可以并行執行&#xff0c;有的必須在完成了其它一些子任務后才能執行。“任務調度”包括一組子任務、以及每個子任務可以執行所依賴的子任務集。 比如完成一個專業的所有課程學習和畢業設計可以看成一個本科生要完成…

【Leetocde | 10 】54. 螺旋矩陣

解題代碼&#xff1a; class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {if (matrix.empty() || matrix[0].empty()) return {};int m matrix.size(), n matrix[0].size();vector<int> res;int up 0, down m …

09-排序1 排序 (25 分)

給定N個&#xff08;長整型范圍內的&#xff09;整數&#xff0c;要求輸出從小到大排序后的結果。 本題旨在測試各種不同的排序算法在各種數據情況下的表現。各組測試數據特點如下&#xff1a; 數據1&#xff1a;只有1個元素&#xff1b; 數據2&#xff1a;11個不相同的整數…

網絡層

1. 簡單解釋一些ARP協議的工作過程

【Leetocde | 24 】152. 乘積最大子序列

這道題最直接的方法就是用DP來做&#xff0c;而且要用兩個dp數組&#xff0c;其中f[i]表示子數組[0, i]范圍內并且一定包含nums[i]數字的最大子數組乘積&#xff0c;g[i]表示子數組[0, i]范圍內并且一定包含nums[i]數字的最小子數組乘積&#xff0c;初始化時f[0]和g[0]都初始化…

【Leetcode | 1】3. 無重復字符的最長子串

這里我們可以建立一個HashMap&#xff0c;建立每個字符和其最后出現位置之間的映射&#xff0c;然后我們需要定義兩個變量res和left&#xff0c;其中res用來記錄最長無重復子串的長度&#xff0c;left指向該無重復子串左邊的起始位置的前一個&#xff0c;由于是前一個&#xff…

【Leetcode | 】93. 復原IP地址

class Solution { public:vector<string> strs;//用于存放臨時的四個段vector<string> result;//存放結果void dfs(string &s, int beginIndex, int step) {if (step 4 && beginIndex s.size()) //搜索成功{string temRec strs[0] "." …

海量數據(一)

1. 有1億個浮點數&#xff0c;如果找出期中最大的10000個&#xff1f; 最容易想到的方法是將數據全部排序&#xff0c;然后在排序后的集合中進行查找&#xff0c;最快的排序算法的時間復雜度一般為O&#xff08;nlogn&#xff09;&#xff0c;如快速排序。但是在32位的機器上&a…

1018 錘子剪刀布 (20 分)

大家應該都會玩“錘子剪刀布”的游戲&#xff1a;兩人同時給出手勢&#xff0c;勝負規則如圖所示&#xff1a; 現給出兩人的交鋒記錄&#xff0c;請統計雙方的勝、平、負次數&#xff0c;并且給出雙方分別出什么手勢的勝算最大。 輸入格式&#xff1a; 輸入第 1 行給出正整數 N…

1019 數字黑洞 (20 分)

給定任一個各位數字不完全相同的 4 位正整數&#xff0c;如果我們先把 4 個數字按非遞增排序&#xff0c;再按非遞減排序&#xff0c;然后用第 1 個數字減第 2 個數字&#xff0c;將得到一個新的數字。一直重復這樣做&#xff0c;我們很快會停在有“數字黑洞”之稱的 6174&…

61. 旋轉鏈表

給定一個鏈表&#xff0c;旋轉鏈表&#xff0c;將鏈表每個節點向右移動 k 個位置&#xff0c;其中 k 是非負數。 示例 1: 輸入: 1->2->3->4->5->NULL, k 2 輸出: 4->5->1->2->3->NULL 解釋: 向右旋轉 1 步: 5->1->2->3->4->NULL…

1020 月餅 (25 分)

月餅是中國人在中秋佳節時吃的一種傳統食品&#xff0c;不同地區有許多不同風味的月餅。現給定所有種類月餅的庫存量、總售價、以及市場的最大需求量&#xff0c;請你計算可以獲得的最大收益是多少。 注意&#xff1a;銷售時允許取出一部分庫存。樣例給出的情形是這樣的&#x…