系統程式的第一個作業是寫一個學號判斷的程式
作業的功能部份不會說很難
主要是要熟悉並學習以下幾個能力:
1.在Linux 環境下編輯程式
2.標頭檔的使用方式
3.將程式功能分割為不同.c檔(Object-Orient Programming的基礎概念)
4.Makefile的使用及寫法
在做這次作業首要遇到的問題就是原本在XP下想先把功能寫好
但卻遇到 main與其他程式link錯誤的問題 一直以為是引入方式錯誤
後來才發現在XP下 程式除了用include"檔名"之外 還必須去更改compiler(Dev-C++)的連結選項...囧
為了這問題搞了很久
至於像Makefile的編寫 之前寒假有先練習相關的東西 這次作業增加了練習的機會
在製作shared library所用的Makefile時 原本想用比較精簡的方式 但Linux似乎沒辦法
我的Makefile:
#program name
PROGRAM = b933040038_hw1_2
#compiler
CC = gcc
#compliler flag
CFLAGS = -O2
#main
MAIN = main.c
#source (fun1,fun2)
SRCS = fun1.c fun2.c
#objects
OBJS = $(SRCS:.c=.o)
#libraries
LIBS = libfun1.so libfun2.so
LIBS1 = $(LIBS:.so=.so.1)
#library path
LIB_PATH= /usr/lib/
#remove
RM = rm
all: $(PROGRAM)
$(PROGRAM): $(OBJS)
$(CC) $(CFLAGS) -o $(PROGRAM) $(MAIN) -lfun1 -lfun2
$(OBJS): $(SRCS) hw1.h
$(CC) -fPIC -c -Wall $(SRCS)
$(CC) -shared -Wl,-soname,libfun1.so -o libfun1.so.1 fun1.o -lc
ln -s libfun1.so.1 libfun1.so
$(CC) -shared -Wl,-soname,libfun2.so -o libfun2.so.1 fun2.o -lc
chmod 444 $(LIBS1)
ln -s libfun2.so.1 libfun2.so
cp $(LIBS) $(LIB_PATH)
clean:
$(RM) -rf $(PROGRAM) *.o *.core *.so *so.1
------------------------------------------------------------------------------------------
紅色部份我原本是想改成
$(CC) -shared -Wl,-soname,$(LIBS) -o $(LIBS1) $(OBJS) -lc
也就是一次把fun1跟fun2的share library做出來
不過他不給用..之後有空再找原因...<囧>
- Mar 01 Sat 2008 23:50
[System Programming] HW1-Makefile & Shared Library
close
全站熱搜
留言列表
發表留言