ネットワーク・プログラミング Linuxシステムとソフトウェア開発
1.授業の進め方 講義(前半60分) プログラミング演習(後半30分) システムコール・プログラミング(C言語) 講義(前半60分) システムコール・プログラミング(C言語) ソケットプログラミング(C言語) 前回の宿題の解説 プログラミング演習(後半30分) 実習レポート(宿題)を作成 レポートの締切は次の週の水曜日18:00 (3回目の締切5/8水曜日) レポート14回x7点=98点、15回回目=20点
2.参考書 Linuxシステムプログラミング オーム社 TCP/IPソケットプログラミング オーム社 C言語プログラミングの本 TCP/IPソケットプログラミング オーム社 C言語プログラミングの本 2年生で習った「Cプログラミング応用」を復習しておいて下さい。 C言語プログラミングに関する本を持参して下さい。
3.Linuxの発展 1973年Unix OS, Ritchie and Thompson 1985年Unix version: System V, 4.x BSD 1988年までに2 version統一(Sun Solaris OS) 1989年までにシステムコールインタフェースの標準化(POSIX) Mach OS(マイクロカーネル) 1991年Linus TorvaldsがLinux開発を開始 LinuxをGPLで公開
4.Linuxの開発環境(GNU) Gnuプロジェクト コンパイル(gcc) 1983年 Richard Stallman emacs, gcc等の開発環境 コンパイル(gcc) cpp:ヘッダファイルの設定やマクロ命令の置換え ccl:アセンブリコードの生成と最適化 as:オブジェクトコード生成 ld:実行可能コードの生成。 リンクエディット。 example.c 前置プロセッサ cpp 拡張されたCソースコード コンパイラ ccl アセンブリ言語コード example.s アセンブラ as オブジェクトコード example.o リンクエディタ ld 実行可能コード a.out
5.ライブラリ ライブラリ 静的ライブラリ 動的ライブラリ オブジェクトファイルの集合 リンクエディット中に、ライブラリコードが実行コードに集められる 動的ライブラリ プログラム実行中にライブラリコードがロードされ、他プログラムと共有される % gcc shoukin.c –o shoukin % ldd shoukin libc.so.6 => /lib/i686/libc.so.6 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 % % gcc –S shoukin.c % ls shoukin shoukin.c shoukin.s % gcc –c shoukin.c shoukin shoukin.c shoukin.o shoukin.s
6.EmacsとLinuxコマンド Linuxで使用する主なshellコマンドを列挙します Emacsの主な操作方法は以下の通り pwd カレントディレクトリを表示 ls -l カレントディレクトリの全ファイルを表示 cd dir ディレクトリdirへ移動 cp file1 file2 file1の複製file2を作成 emacs ex1.c ex1.cをemacsで修正 gcc -o ex1 ex1.c ex1.cをコンパイルし、実行可能形式ex1を作成 ./ex1 ex1の実行 Ctrl-p 直前に実行したコマンドを表示 Ctrl-p Ctrl-p 二つ前に実行したコマンドを表示 man emacs emacsのマニュアルを見る exit Linuxからログアウト Emacsの主な操作方法は以下の通り 矢印キー カーソルの移動 Esc-x goto-line 48 カーソルを48行目へ Ctrl-d(又は、Delete) カーソル上の文字消去 Ctrl-g 現在の操作状態からぬける Ctrl-x u 直前の実行取消 Ctrl-x Ctrl-s ファイルの上書き Ctrl-x Ctrl-c emacsの終了
宿題1 宿題(プログラムex1.c) レポートの締切は次の週の水曜日18:00 表紙に氏名と学籍番号を書く プログラムをemacsで打ち込み、実行結果を報告 VMwarePlayerからubuntuを立ち上げる (又は、TeraTermでipcs.bene.fit.ac.jpにログイン) emacsを使って、ex1.cを入力 コンパイル: gcc -o ex1 ex1.c 実行: ./ex1 実施した内容を説明する文章を書く レポートはWordを使って書く レポートの締切は次の週の水曜日18:00
レポート表紙 --------------------------(表紙)--------------------------- ネットワークプログラミング 第xx回目の宿題 情報工学科 3年 x組 SxxAxxxx 氏名 _____ 実施日 平成3x年x月x日 提出日 平成3x年x月x日 ---------------------------------------------------------------