cd ~/osv/apps
mkdir cpp-example
root@bamboo-VirtualBox:~/osv/apps/cpp-example# cat Makefile
module: hello_world.so
CFLAGS = -g -fPIC
CC = g++
%.o: %.cpp
$(CC) -c $(CFLAGS) -o $@ $<
hello_world.so: hello_world.o
$(CC) -shared -o $@ $^
clean:
rm -f hello_world.so *.o
root@bamboo-VirtualBox:~/osv/apps/cpp-example# cat hello_world.cpp
#include <iostream>
using namespace std;
int main(){
cout << "hello world!" << endl;
return 0;
}
root@bamboo-VirtualBox:~/osv/apps/cpp-example# cat usr.manifest
/tools/hello_world.so: ${MODULE_DIR}/hello_world.so
root@bamboo-VirtualBox:~/osv/apps/cpp-example# cat module.py
from osv.modules import api
default = api.run('/tools/hello_world.so')
编译及执行
./scripts/build image=cpp-example
./scripts/run.py -nv --verbose
说明:osv的app类似于linux中的编译运行内核驱动,编译自己的模块,然后启动的时候注册运行(osv 本身就只有kernel space)