
例如你的库在绝对目录/lib/libtest.a下面
你就可以这样来编译
你可以用-L制定库的目录,用-l指定库的名称。(是一起用的-L -l)
例如库的名称为libtest.a 那么就用-ltest
注:-ltest要放在-o的后面,不然不会起作用。
详细可参考: https://blog.csdn.net/u011964923/article/details/73297443
在Ubutu上编译出来的.so文件,怎么添加到Android项目中去使用呢?目前:可以通过Makefile方式和CMake方式引入预编译静动态库(静态库.a 动态库.so)到项目中去使用。就目前而言CMake是Goole推荐使用方式,但是加入接手一个老的NDK项目是MakeFile方式,看不懂就GePi了,所以这里我们还是介绍一下MakeFile方式将静动态库加入到AS中,完成NDK项目的开发。废话不多说,直接撸步骤了:
1、在src/main目录下创建一个ndkBuild文件夹
2、在此文件中创建一个Android.mk文件
3、在此文件中创建一个test.c的源文件
4、将编译好的的.so库复制到src/main目录下
如图所示目录结构:
1、编辑Android.mk文件
2、编辑grade(app)文件
3、编辑test.c文件
4、使用编译好的.so库里面的函数
本结果运行在Android 5.1 系统上
再次运行在Android8.0系统上
看以清楚知道,其实我们的APK包里面就没有libMainTest.so库,所以APP在8.0上会出现奔溃的现象。so...
1、在src/main目录下创建一个cmake文件夹
include:里面包含需要一些头文件
cmakeTest.c:需要编译的源文件
2、在app目录下创建一个文件:CmakeLists.txt
3、编辑grade(app)
4、编辑cmakeTest.c文件
4、引用编译好的libcmakeTest.so
Android 8.0.0系统:
Android 5.1.1系统:
编写Makefile生成静态库的方法:方法一
//////////////////////////////////////////////////////////////////
divFIX=/usr
LIBDIR=$(divFIX)/lib
INCLUDEDIR=$(divFIX)/include
#$(DESTDIR) is usally empty. rpmbuild needs it.
DESTDIR=
CC=gcc
CFLAGS=
LIBS=
INCLUDES=
AR=ar
all: hello.a
hello.a: file1.o file2.o
$(AR) -r $@ $^
file1.o: file1.c
$(CC) $(CFLAGS) -c $^ -o $@ $(LIBS) $(INCLUDES)
file2.o: file2.c
$(CC) $(CFLAGS) -c $^ -o $@ $(LIBS) $(INCLUDES)
install:
@echo Copying library files to $(DESTDIR)/$(LIBDIR):
@cp -rp libthreadpool.a $(DESTDIR)/$(LIBDIR)/
@echo Copying head files to $(DESTDIR)/$(DATADIR):
@cp -rp src/thread-pool.h $(DESTDIR)/$(INCLUDEDIR)/
clean:
rm -rf *.o \
*.a
uninstall:
rm -rf $(LIBDIR)/hello.a\
$(INCLUDEDIR)/hello.h
//////////////////////////////////////////////////////////////////////////
方法二
gcc -o hellofile.a file1.o file2.o -lc -lm -shared
动态库
gcc -o hellofile.so file1.o file2.o -lc -lm -shared
# -lpthread 线程
# -shared共享库
# -lm 表示连接名为“libm.a”的数学函数库
# -lc 代表链接器将连接GCC的标准C库
# -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
# -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
# .a为后缀的文件,是由目标文件构成的档案库文件;
# .so 为动态库。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)