【新炬網路名師大講堂】在AIX機器上使用xlc編譯c的動態庫

shsnchyw發表於2014-12-09

一、編譯路徑:
[lzj@239: ~/cpp/lib_test]$ pwd
/home/lzj/cpp/lib_test

二、初始檔案:
[lzj@239: ~/cpp/lib_test]$ ls
hello.c hello.h main.c

[lzj@239: ~/cpp/lib_test]$ cat hello.c
#include
void hello(const char *name)
{
printf(“Hello %s!\n”, name);
}

[lzj@239: ~/cpp/lib_test]$ cat hello.h
#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif //HELLO_H

[lzj@239: ~/cpp/lib_test]$ cat main.c
#include “hello.h”
int main()
{
hello(“everyone”);
return 0;
}

三、編譯步驟如下:
1.編譯hello.c的檔案生成hell.o檔案:
[lzj@239: ~/cpp/lib_test]$ xlc -c hello.c
結果:
[lzj@239: ~/cpp/lib_test]$ ls
hello.c hello.h hello.o main.c

2.編譯libmyhello.so動態庫:
[lzj@239: ~/cpp/lib_test]$xlc -qmkshrobj -o libmyhello.so hello.o
或 xlc -G -o libmyhello.so hello.o
結果:
[lzj@239: ~/cpp/lib_test]$ ls
hello.c hello.h hello.o libmyhello.so main.c

3.編譯main.c成可執行程式hello:
[lzj@239: ~/cpp/lib_test]$xlc -brtl -o hello main.c -lmyhello -L.
結果:
[lzj@239: ~/cpp/lib_test]$ ls
hello hello.c hello.h hello.o libmyhello.so main.c

4.hello程式執行結果:
[lzj@239: ~/cpp/lib_test]$ hello
Hello everyone!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29960155/viewspace-1362346/,如需轉載,請註明出處,否則將追究法律責任。

相關文章