當前位置:首頁 » 編程軟體 » linux下c編程入門

linux下c編程入門

發布時間: 2022-10-29 16:28:52

㈠ 如何自學linuxc語言嵌入式編程詳細點謝謝!書籍及開發板用什麼的最好

開發板用友善之臂的吧
mini2440 連3.5寸屏500塊錢的樣子
有好幾張DVD學習光碟

這款口碑比較高

嵌入式Linux操作系統學習規劃
ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟體開發目標:
(1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9)
(2) 必須掌握一個嵌入式操作系統 (初步定為uclinux或linux,版本待定)
(3) 必須熟悉嵌入式軟體開發流程並至少做一個嵌入式軟體項目。
從事嵌入式軟體開發的好處是:
(1)目前國內外這方面的人都很稀缺。這一領域入門門檻較高,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,大多數人無條件接觸。
(2)與企業計算等應用軟體不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。
(3)哪天若想創業,搞自已的產品,嵌入式不像應用軟體那樣容易被盜版。硬體設計一般都是請其它公司給訂做(這叫「貼牌」:OEM),都是通用的硬體,我們只管設計軟體就變成自己的產品了。
(4)興趣所在,這是最主要的。
從事嵌入式軟體開發的缺點是:
(1)入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是操作系統級軟體功底不深,則可能不適於此行。
(2)這方面的企業數量要遠少於企業計算類企業。
(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。
(4)平台依託強,換平台比較辛苦。
興趣的由來:
1、成功觀念不同,不虛度此生,就是我的成功。
2、喜歡思考,挑戰邏輯思維。
3、喜歡C
C是一種能發揮思維極限的語言。關於C的精神的一些方面可以被概述成短句如下:
相信程序員。
不要阻止程序員做那些需要去做的。
保持語言短小精幹。
一種方法做一個操作。
使得它運行的夠快,盡管它並不能保證將是可移植的。
4、喜歡底層開發,討厭vb類開發工具(並不是說vb不好)。
5、發展前景好,適合創業,不想自己要死了的時候還是一個工程師。
方法步驟:
1、基礎知識:
目的:能看懂硬體工作原理,但重點在嵌入式軟體,特別是操作系統級軟體,那將是我的優勢。
科目:數字電路、計算機組成原理、嵌入式微處理器結構。
匯編語言、C/C++、編譯原理、離散數學。
數據結構和演算法、操作系統、軟體工程、網路、資料庫
方法:雖科目眾多,但都是較簡單的基礎,且大部分已掌握。不一定全學,可根據需要選修。
主攻書籍:the c++ programming language(一直沒時間讀)、數據結構-C2。

2、學習linux:
目的:深入掌握linux系統。
方法:使用linux—〉linxu系統編程開發—〉驅動開發和分析linux內核。先看深,那主講原理。看幾遍後,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學習。最後深入代碼。
主攻書籍:linux內核完全剖析、unix環境高級編程、深入理解linux內核、情景分析和源代。
3、學習嵌入式linux:
目的:掌握嵌入式處理器其及系統。
方法:(1)嵌入式微處理器結構與應用:直接arm原理及匯編即可,不要重復x86。
(2)嵌入式操作系統類:ucOS/II簡單,開源,可供入門。而後深入研究uClinux。
(3)必須有塊開發板(arm9以上),有條件可參加培訓(進步快,能認識些朋友)。
主攻書籍:毛德操的《嵌入式系統》及其他arm9手冊與arm匯編指令等。

4、深入學習:
A、數字圖像壓縮技術:主要是應掌握MPEG、mp3等編解碼演算法和技術。
B、通信協議及編程技術:TCP/IP協議、802.11,Bluetooth,GPRS、GSM、CDMA等。

2010-8-21 16:46 回復
122.90.173.* 2樓

C、網路與信息安全技術:如加密技術,數字證書CA等。
D、DSP技術:Digital Signal Process,DSP處理器通過硬體實現數字信號處理演算法。
說明:太多細節未說明,可根據實際情況調整。重點在於1、3,不必完全按照順序作。對於學習c++,理由是c++不只是一種語言,一種工具,她還是一種藝術,一種文化,一種哲學理念、但不是拿來炫耀得東西。對於linux內核,學習編程,讀一些優秀代碼也是有必要的。
注意: 要學會舉一反多,有強大的基礎,很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種編程語言,並具有良好的邏輯思維。一定要理論結合實踐。
不要一味鑽研技術,雖然擠出時間是很難做到的,但還是要留點餘地去完善其他的愛好,比如宇宙,素描、機械、管理,心理學、游戲、科幻電影。還有一些不願意做但必須要做的!
技術是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機會來了在創業(不要相信有奇跡發生,盲目創業很難成功,即便成功了發展空間也不一定很大)。

嵌入式書籍推薦
Linux基礎
1、《Linux與Unix Shell 編程指南》
C語言基礎
1、《C Primer Plus,5th Edition》【美】Stephen Prata著
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)著
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux應用程序開發詳解》
Linux內核
1、《深入理解Linux內核》(第三版)
2、《Linux內核源代碼情景分析》毛德操 胡希明著
研發方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP詳解》
3、《Linux內核編程》
4、《Linux設備驅動開發》(LDD)
5、《Linux高級程序設計》 楊宗德著
硬體基礎
1、《ARM體系結構與編程》杜春雷著
2、S3C2410 Datasheet
英語基礎
1、《計算機與通信專業英語》
系統教程
1、《嵌入式系統――體系結構、編程與設計》
2、《嵌入式系統――採用公開源代碼和StrongARM/Xscale處理器》毛德操 胡希明著
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系統原理與實例開發》 楊宗德著
理論基礎
1、《演算法導論》
2、《數據結構(C語言版)》
3、《計算機組織與體系結構?性能分析》
4、《深入理解計算機系統》【美】Randal E. Bryant David O''Hallaron著
5、《操作系統:精髓與設計原理》
6、《編譯原理》
7、《數據通信與計算機網路》
8、《數據壓縮原理與應用》

C語言書籍推薦
1. The C programming language 《C程序設計語言》
2. Pointers on C 《C和指針》
3. C traps and pitfalls 《C陷阱與缺陷》
4. Expert C Lanuage 《專家C編程》
5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
《編程精粹--Microsoft 編寫優質無錯C程序秘訣》
6. Programming Embedded Systems in C and C++ 《嵌入式系統編程》
7.《C語言嵌入式系統編程修煉》
8.《高質量C++/C編程指南》林銳
盡可能多的編碼,要學好C,不能只注重C本身。演算法,架構方式等都很重要。

這里很多書其實是推薦而已,不必太在意,關鍵還是基礎,才是重中之重!!!

㈡ linux下C編程

我不是很熟悉c語言,我把你的程序在我的機上試過了,得到的信息如下。

$ gcc -o main main.c myhead.h read.c sort.c sum.c
read.c: 在函數『read』中:
read.c:16: 警告: 格式『%s』需要類型『char *』,但實參 3 的類型為『char (*)[10]』
read.c:16: 警告: 格式『%s』需要類型『char *』,但實參 4 的類型為『char (*)[10]』
/tmp/cc5OunHc.o: In function `read':
read.c:(.text+0xb1): undefined reference to `student'
read.c:(.text+0xc3): undefined reference to `student'
read.c:(.text+0xea): undefined reference to `student'
read.c:(.text+0x112): undefined reference to `student'
read.c:(.text+0x128): undefined reference to `student'
/tmp/cc5OunHc.o:read.c:(.text+0x15b): more undefined references to `student' follow
collect2: ld 返回 1

看來是student結構出了些問題,而且很可能與read.c有關。
你的錯誤解釋說得是student多重定義了。
我的機上寫的卻是student未定義。
我也不知道是怎麼回事了。
不過希望對你親自分析有幫助吧。

㈢ 怎麼在linux中編寫c語言程序

首先需要有一個安裝好gcc的Linux系統,然後進行代碼的編寫進行測試演示

工具:

Ubuntu12.04

步驟

  1. 進入Linux系統後,啟動一個shell命令終端,在Ubuntu的三鍵啟動終端方法是同時按下Ctrl鍵+Alt鍵+t啟動後如下圖所示:

㈣ 用linux進行C編程,詳細的操作步驟

使用gcc
進入控制台
======================================
$ mkdir helloworld //建立一個文件夾用來放程序源代碼
$ cd helloworld //進入文件夾
======================================
$ vim main.c //編輯源文件
按(小寫)i // to vim insert mode
// 輸入源代碼
#include <stdio.h>

int main()
{
printf("hello world\n");
return 0;
}

按ESC鍵 //to vim normal mode
按大寫ZZ //保存main.c並退出vim
=======================================
g++ main.c //編譯
./a.out //運行程序
完成。

編輯源文件也可以用Text Editor之類的,不一定要用VIM

㈤ Linux 下的C語言編程

#include<stdio.h>

main()
{int p1,p2;
printf("in parent when no child\n");
system("ps -af");

while ((p1=fork())==-1);

if(p1==0)
{printf("hello I am the first child!\n");
printf("in child1:pid:%d,ppid:%d\n",getpid(),getppid());
system("ps -af");}

else
{printf("in parent when one child:\n");
system("ps -af");

while((p2=fork())==-1);

if(p2==0)
{printf("hello I am the second child!\n");
printf("in child2:pid:%d,ppid:%d\n",getpid(),getppid());
system("ps -af");
}

else{printf("hello I am the parent!\n");
printf("in parent when two chileren: pid:%d,ppid:%d\n",getpid(),getppid());
}
}
}

還給你一個

#include<fcntl.h>

#include<stdlib.h>

#include<string.h>

#include<stdio.h>

int fatal(const char* info)

{printf("error!!!\n");

exit(0);
return(0);}

int lock(int fd)
{lseek(fd,0,SEEK_SET);

if(lockf(fd,F_LOCK,0)==-1)

fatal("lockf()");
return 0;
}

int unlock(int fd)
{lseek(fd,0,SEEK_SET);

if(lockf(fd,F_ULOCK,0)==-1)
fatal("unlockf()");
return 0;
}

int main()

{int pid,fd;
char str[80];
fd=open("tep.txt",O_CREAT,0644);
pid=fork();

switch(pid)
{
case -1:
fatal("fork fail!");

case 0:sleep(1);
lock(fd);
lseek(fd,SEEK_SET,0);
read(fd,str,sizeof(str));
unlock(fd);
printf("son %d:read str from tmpfile:%s\n",getpid(),str);
exit(0);

default:
lock(fd);
printf("parent %d:please enter a str for tmpfile(strlen<80):\n",getpid());
scanf("%s",str);
lseek(fd,SEEK_SET,0);
write(fd,str,strlen(str));
unlock(fd);
wait(0);
close(fd);
exit(0);
}
}

㈥ linux下c語言編程

實在點,給你些命令操作操作,不過好象有點多,哈哈
Linux/Unix常用命令
1、目錄操作
和DOS相似,UNIX採用樹型目錄管理結構,由根目錄(/)開始一層層將子目錄建下去,各子目錄以 / 隔開。用戶login後,工作目錄的位置稱為 home directory,由系統管理員設定。『~』符號代表自己的home directory,例如 ~/myfile 是指自己home目錄下myfile這個文件。
(1)顯示目錄文件 ls
執行格式: ls [-atFlgR] [name] (name可為文件或目錄名稱)
例: ls 顯示出當前目錄下的文件
ls -a 顯示出包含隱藏文件的所有文件
ls -t 按照文件最後修改時間顯示文件
ls -F 顯示出當前目錄下的文件及其類型
ls -l 顯示目錄下所有文件的許可權、擁有者、文件大小、修改時間及名稱
ls -lg 同上
ls -R 顯示出該目錄及其子目錄下的文件
注:ls與其它命令搭配使用可以生出很多技巧(最簡單的如"ls -l | more"),更多用法請輸入ls --help查看,其它命令的更多用法請輸入 命令名 --help 查看.

(2)建新目錄 mkdir
執行格式: mkdir directory-name
例: mkdir dir1 (新建一名為dir1的目錄)
(3)刪除目錄 rmdir
執行格式: rmdir directory-name 或 rm directory-name
例:rmdir dir1 刪除目錄dir1,但它必須是空目錄,否則無法刪除
rm -r dir1 刪除目錄dir1及其下所有文件及子目錄
rm -rf dir1 不管是否空目錄,統統刪除,而且不給出提示,使用時要小心

(4) 改變工作目錄位置 cd
執行格式: cd [name]
例: cd 改變目錄位置至用戶login時的working directory
cd dir1 改變目錄位置,至dir1目錄
cd ~user 改變目錄位置,至用戶的working directory
cd .. 改變目錄位置,至當前目錄的上層目錄
cd ../user 改變目錄位置,至上一級目錄下的user目錄
cd /dir-name1/dir-name2 改變目錄位置,至絕對路徑(Full path)
cd - 回到進入當前目錄前的上一個目錄

(5)顯示當前所在目錄pwd
執行格式: pwd
(6)查看目錄大小
執行格式: [-s] directory
例: dir1 顯示目錄dir1及其子目錄容量(以kb為單位)
-s dir1 顯示目錄dir1的總容量
(7)顯示環境變數
echo $HOME 顯示家目錄
echo $PATH 顯示可執行文件搜索路徑
env 顯示所有環境變數(可能很多,最好用"env | more","env | grep PATH"等)
(8)修改環境變數,在bash下用export,如:
export PATH=$PATH:/usr/local/bin
想知道export的具體用法,可以用shell的help命令:help export
2、文件操作
(1)查看文件(可以是二進制的)內容 cat
執行格式:cat filename或more filename 或cat filename|more
例: cat file1 以連續顯示方式,查看文件file1的內容
more file1
或 cat file1|more 以分頁方式查看文件的內容
(2)刪除文件 rm
執行格式: rm filename
例: rm file?
rm f*
(3)復制文件 cp
執行格式: cp [-r] source destination
例: cp file1 file2 將file1復製成file2
cp file1 dir1 將file1復制到目錄dir1
cp /tmp/file1 將file1復制到當前目錄
cp /tmp/file1 file2 將file1 復制到當前目錄名為file2
cp -r dir1 dir2 (recursive )復制整個目錄。
(4)移動或更改文件、目錄名稱mv
執行格式: mv source destination
例: mv file1 file2 將文件file1,更名為file2
mv file1 dir1 將文件file1,移到目錄dir1下
mv dir1 dir2
(5)比較文件(可以是二進制的)或目錄的內容 diff
執行格式: diff [-r] name1 name2 (name1、name2同為文件或目錄)
例: diff file1 file2 比較file1與file2的不同處
diff -r dir1 dir2 比較dir1與dir2的不同處
(6)文件中字元串的查找 grep
執行格式: grep string file
例: grep abc file1 查找並列出串abc所在的整行文字
(7)文件或命令的路徑尋找
執行格式一:whereis command 顯示命令的路徑
執行格式二:which command 顯示路徑及使用者所定義的別名
執行格式三:whatis command 顯示命令的功能摘要

(8)建立文件或目錄的鏈接 ln
例: ln source target1 建立source文件(已存在)的硬鏈接,命名為target1
ln -s source target2 建立source文件的符號鏈接,命名為target2

文件編輯器vi
vi是在UNIX 上被廣泛使用的中英文編輯軟體。vi是visual editor的縮寫,是UNIX提供給用戶的一個窗口化編輯環境。
進入vi,直接執行vi編輯程序即可。
例:$vi test.c
顯示器出現vi的編輯窗口,同時vi會將文件復制一份至緩沖區(buffer)。vi先對緩沖區的文件進行編輯,保留在磁碟中的文件則不變。編輯完成後,使用者可決定是否要取代原來舊有的文件。
1、vi的工作模式
vi提供二種工作模式:輸入模式(insert mode)和命令模式(command mode)。使用者進入vi後,即處在命令模式下,此刻鍵入的任何字元皆被視為命令,可進行刪除、修改、存檔等操作。要輸入信息,應轉換到輸入模式。
(1)命令模式
在輸入模式下,按ESC可切換到命令模式。命令模式下,可選用下列指令離開vi:
:q! 離開vi,並放棄剛在緩沖區內編輯的內容
:wq 將緩沖區內的資料寫入磁碟中,並離開vi
:ZZ 同wq
:x 同wq
:w 將緩沖區內的資料寫入磁碟中,但並不離開vi
:q 離開vi,若文件被修改過,則要被要求確認是否放棄修改的內容,此指令可與:w配合使用

(2)命令模式下游標的移動
H 左移一個字元
J 下移一個字元
K 上移一個字元
L 右移一個字元
0 移至該行的首
$ 移至該行的末
^ 移至該行的第一個字元處
H 移至窗口的第一列
M 移至窗口中間那一列
L 移至窗口的最後一列
G 移至該文件的最後一列
W, W 下一個單詞 (W 忽略標點)
B, B 上一個單詞 (B 忽略標點)
+ 移至下一列的第一個字元處
- 移至上一列的第一個字元處
( 移至該句首
) 移至該句末
{ 移至該段首
} 移至該段末
NG 移至該文件的第n列
N+ 移至游標所在位置之後第n列
n- 移至游標所在位置之前第n列

(3)輸入模式
輸入以下命令即可進入vi輸入模式:
a(append) 在游標之後加入資料
A 在該行之末加入資料
i(insert) 在游標之前加入資料
I 在該行之首加入資料
o(open) 新增一行於該行之下,供輸入資料用
O 新增一行於該行之上,供輸入資料用
dd 刪除當前游標所在行
X 刪除當前游標字元
x 刪除當前游標之前字元
U 撤消
• 重做
F 查找

ESC鍵 離開輸入模式

GNU C編譯器
LINUX上可用的C編譯器是GNU C編譯器,它建立在自由軟體基金會編程許可證的基礎上,因此可以自由發布。
LINUX 上的GNU C編譯器(GCC)是一個全功能的ANCI C兼容編譯器。下面介紹GCC和一些GCC編譯器最常用的選項。
1、使用GCC
通常後跟一些選項和文件名來使用GCC編譯器。GCC命令的基本用法如下:
gcc [options] [filenames]
命令行選項指定的編譯過程中的具體操作
2、GCC常用選項
GCC有超過100個的編譯選項可用,這些選項中的許多可能永遠都不會用到,但一些主要的選項將會頻繁使用。很多的GCC選項包括一個以上的字元,因此必須為每個選項指定各自的連字元,並且就像大多數LINUX 命令一樣不能在一個單獨的連字元後跟一組選項。例如:
gcc test.c
編譯成功後,當前目錄下就產生了一個可執行文件a.out。
也可用-o選項來為即將產生的可執行文件指定一個文件名來代替a.out。例如:
gcc -o count count.c
此時得到的可執行文件就不再是a.out,而是count。
3、執行文件
格式: ./可執行文件名
例:./a.out
./count

㈦ linux下的c/c++開發

我就是做LINUX下的C開發的。

准確的說,LINUX下C才是主要的開發語言,但是寫應用程序還是要用面向對象的,尤其是圖形界面的,不如QT和X和GTK等等。下面說的必須要求你C語言學的很好而且會使用LINUX的情況下。LINUX常用命令要熟悉。

要學LINUX下的C編程,先看一兩本LINUX下C的書比較好,這個你自己選擇,但是經典的書還是好一些,比如《LINUX程序設計》、《UNIX環境高級編程》,看這些的時候把書上的例子選擇一些自己編譯一下,哪怕是照著敲進去,事半功倍。

看完一本這樣的書,你對LINUX系統編程的知識就足夠了,這時候你可以開始閱讀一些LINUX下的源代碼來鍛煉和提升能力了,LINUX下有很多開源的軟體,你可以搜一下,應用程序也很多,但是最好的源代碼還是LINUX內核。

推薦一本簡單的內核書《linux內核完全剖析0.12》,這個講的是0.12內核,代碼量只有1萬多行的內核,現在的2.6估計一千萬,一輩子看不完。這個書講了很多X86體系結構的知識,這時理解內核必備的,匯編你要能看懂。

能看懂內核代碼了,就說明你至少不是初學者了,現在肯定能開發項目了,有了經驗後,恭喜你,你就成為一名LINUX程序員了。

再由這些基礎後,你就可以選擇一些具體的開放方向了,比如底層一點,驅動,協議等、或者嵌入式應用等、或者是QT等。不過這就是後話了,呵呵

我自己的一些體會,希望能對你有用。

㈧ 在Linux下用C語言編程

#include <unistd.h>;
#include <sys/types.h>;
#include <sys/stat.h>;
#include <stdio.h>;
#include <errno.h>;
#include <fcntl.h>;
#include <signal.h>;
/* Linux 的默任個人的郵箱地址是 /var/spool/mail/用戶的登錄名 */
#define MAIL "/var/spool/mail/hoyt"
/* 睡眠10 秒鍾 */
#define SLEEP_TIME 10

main(void)
{
pid_t child;
if((child=fork())==-1)
{
printf("Fork Error:%s\n",strerror(errno));
exit(1);
}
else if(child > 0)
while(1);
if(kill(getppid(),SIGTERM)==-1)
{
printf("Kill Parent Error:%s\n",strerror(errno));
exit(1);
}

{
int mailfd;
while(1)
{
if((mailfd=open(MAIL,O_RDONLY))!=-1)
{
fprintf(stderr,"%s","\007");
close(mailfd);
}

sleep(SLEEP_TIME);
}
}
}

㈨ 在Linux系統中,如何運行一個C語言程序

1、打開kali linux的終端。創建一個文件並命名為test.c。在終端輸入:touch test.c。

熱點內容
安卓70能用什麼軟體 發布:2025-05-16 01:45:09 瀏覽:480
編程發展史 發布:2025-05-16 01:38:52 瀏覽:528
android圖片氣泡 發布:2025-05-16 01:38:40 瀏覽:885
文件加密編輯器下載 發布:2025-05-16 01:30:41 瀏覽:343
linuxapacheyum安裝 發布:2025-05-16 01:30:31 瀏覽:476
大連賓利浴池wifi密碼是多少 發布:2025-05-16 01:25:36 瀏覽:172
緩存數據生產服務 發布:2025-05-16 01:08:58 瀏覽:584
普通電腦伺服器圖片 發布:2025-05-16 01:04:02 瀏覽:971
伺服器地址和埠如何區分 發布:2025-05-16 01:03:17 瀏覽:834
重新編目資料庫 發布:2025-05-16 00:54:34 瀏覽:514