当前位置: 技术问答>linux和unix
arm linux 把c++类打包成.so的问题
来源: 互联网 发布时间:2016-06-19
本文导语: linux 怎样可以把c++类封装成dll http://topic.csdn.net/u/20090716/16/6a9a7ec8-d2af-44d3-9ace-f5e816e9c9df.html 我有做pc机上的 .so, 成功! 我象转到arm linux下 #CXX=g++ CXX = arm-hismall-linux-g++ CXXFLAGS= -Wall -W -O2 -g objects= NTPSocket.o SNTPC...
linux 怎样可以把c++类封装成dll
http://topic.csdn.net/u/20090716/16/6a9a7ec8-d2af-44d3-9ace-f5e816e9c9df.html
我有做pc机上的 .so, 成功!
我象转到arm linux下
#CXX=g++
CXX = arm-hismall-linux-g++
CXXFLAGS= -Wall -W -O2 -g
objects= NTPSocket.o SNTPClient.o NTPDemo.o
NTPDemo:$(objects)
$(CXX) $(CXXFLAGS) -o $@ $^
NTPSocket.o:NTPSocket.cpp NTPSocket.h types.h
$(CXX) $(CXXFLAGS) -c $^
SNTPClient.o:SNTPClient.cpp SNTPClient.h types.h
$(CXX) $(CXXFLAGS) -c $^
NTPDemo.o:NTPDemo.cpp
$(CXX) $(CXXFLAGS) -c $^
clean:
rm -fr *.o NTPDemo
这个编译成.o文件没问题,但
arm-hismall-linux-g++ -o NTPClient.so NTPSocket.o SNTPClient.o
出现crtl.o:In function '_start':
ctrl.S:(.text+0x4c):underfined reference to 'main'
错误, 为什么?
http://topic.csdn.net/u/20090716/16/6a9a7ec8-d2af-44d3-9ace-f5e816e9c9df.html
我有做pc机上的 .so, 成功!
我象转到arm linux下
#CXX=g++
CXX = arm-hismall-linux-g++
CXXFLAGS= -Wall -W -O2 -g
objects= NTPSocket.o SNTPClient.o NTPDemo.o
NTPDemo:$(objects)
$(CXX) $(CXXFLAGS) -o $@ $^
NTPSocket.o:NTPSocket.cpp NTPSocket.h types.h
$(CXX) $(CXXFLAGS) -c $^
SNTPClient.o:SNTPClient.cpp SNTPClient.h types.h
$(CXX) $(CXXFLAGS) -c $^
NTPDemo.o:NTPDemo.cpp
$(CXX) $(CXXFLAGS) -c $^
clean:
rm -fr *.o NTPDemo
这个编译成.o文件没问题,但
arm-hismall-linux-g++ -o NTPClient.so NTPSocket.o SNTPClient.o
出现crtl.o:In function '_start':
ctrl.S:(.text+0x4c):underfined reference to 'main'
错误, 为什么?
|
你是不是没有加某些参数?
-shared参数加了吗?
arm-hismall-linux-g++ -o NTPClient.so NTPSocket.o SNTPClient.o
你的这个编译方式可能有问题。
编译器会认为你要编译成独立的可执行文件,
从main函数开始执行。而不是库文件。
所以它会提示underfined reference to 'main'
-shared参数加了吗?
arm-hismall-linux-g++ -o NTPClient.so NTPSocket.o SNTPClient.o
你的这个编译方式可能有问题。
编译器会认为你要编译成独立的可执行文件,
从main函数开始执行。而不是库文件。
所以它会提示underfined reference to 'main'
|
arm-hismall-linux-g++ -shared -o NTPClient.so NTPSocket.o SNTPClient.o
|
g++ -o 是直接生成执行文件的,里面没有main函数当然会报错.
加上-shared才表示生成动态链接库,-static则是静态库,
加上-shared才表示生成动态链接库,-static则是静态库,