一、建立目录结构
/data/aifront/cpl/others/demo02
-rw-rw-r-- console.cpp
drwxrwxr-x src /*源文件目录*/
-rw-rw-r-- hello.mk
drwxrwxr-x include /*空目录*/
drwxrwxr-x lib /*空目录*/
-rw-rw-r-- console.mk
drwxrwxr-x tmp /*空目录*/
/data/aifront/cpl/others/demo02/src
-rw-rw-r-- hello.cpp
-rw-rw-r-- hello.h
<<hello.h>>
#ifndef HELLO_H_
#define HELLO_H_
#include <fstream>
#include <string>
using namespace std;
class hello{
public:
hello();
~hello();
void say();
};
#endif
<<hello.cpp>>
#include "hello.h"
hello::hello(){
cout << "我被创建了!" << endl;
}
hello::~hello(){
cout << "我被删除了!" << endl;
}
void hello::say(){
cout << "Hello World !" << endl;
}
<<hello.mk>>
so:cp hello
CC -G ./tmp/hello.o -o ./lib/libhello.so
hello:
CC -c ./src/hello.cpp -o ./tmp/hello.o
cp:
cp ./src/hello.h ./include/hello.h
<<console.cpp>>
#include "hello.h"
int main()
{
hello he;
he.say();
return 0;
}
<<console.mk>>
main:console
CC -L/data/aifront/cpl/others/demo02/lib -lhello ./tmp/t.o -o ./bin
console:
CC -I/data/aifront/cpl/others/demo02/include -c console.cpp -o ./tmp/t.o
代码执行过程
[/data/aifront/cpl/others/demo02]make -f hello.mk
cp ./src/hello.h ./include/hello.h
CC -c ./src/hello.cpp -o ./tmp/hello.o
CC -G ./tmp/hello.o -o ./lib/libhello.so
[/data/aifront/cpl/others/demo02]make -f console.mk
CC -I/data/aifront/cpl/others/demo02/include -c console.cpp -o ./tmp/t.o
CC -L/data/aifront/cpl/others/demo02/lib -lhello ./tmp/t.o -o ./bin
[/data/aifront/cpl/others/demo02]export LD_LIBRARY_PATH=/data/aifront/cpl/others/demo02/lib
[/data/aifront/cpl/others/demo02]bin
我被创建了!
Hello World !
我被删除了!
[/data/aifront/cpl/others/demo02]