前言:之前有提過為了不寫出臃腫不堪的程式碼,我們應該講每個功能(方法)分散寫到不同的.c檔(利用.h檔來共用方法),這裡記錄該如何在gcc下將不同目錄的.h及.o連結到一起!
main.c檔案的位置
checksum.h檔案位置
encrypt.h檔案位置
checksum.o及encrypt.o的位置
main.c code
#include <stdio.h>
#include <stdlib.h>
#include "encrypt.h"
#include "checksum.h"
int main(int argc, char *argv[])
{
char s[]="speak sumthing";
encrypt(s);
printf("encrypt is %s\n",s);
printf("checksum is %i\n",checksum(s));
encrypt(s);
printf("encrypt is %s\n",s);
printf("checksum is %i\n",checksum(s));
return 0;
}
checksum.c code
#include "checksum.h"
int checksum(char *s)
{
int sum =0;
while(*s)
{
sum= sum +*s;
s++;
}
return sum;
}
encrypt.c code
#include "encrypt.h"
void encrypt(char *s)
{
while(*s)
{
*s=*s^31;
s++;
}
}
-I 告知.h檔的位置(folder folder2 2個位置都存在.h檔)
-o檔直接告知my_object_file/encrypt.o
my_object_file/checksum.o
將.o收集到收藏檔(.a檔)裡面
建立收藏檔指令 ar rcs libfilename.a file1.o file2.o <----要收藏的.o檔
建立.a檔開頭一定要lib
執行gcc main.c -L . -lfilename -o try
-L . <---注意 當收藏檔放在自己的目錄下一定要用-L告知 .當下目錄的意思
此範例用.a檔實作:
題外話在linux底下gcc指令 有關路徑的話必須先加上/
例如-I /folder -L/where
沒有留言:
張貼留言