linux/android编译常见问题

原创 2018年04月17日 16:02:28

1.gcc可以用来编译.c源文件,也可以用来编译c++源代码。

(1)当gcc检测到.c文件时会按照c语言的语法进行编译,当检测到是.cpp时,就会按照c++语法进行编译;

(2)gcc只能编译cpp文件,但是在链接时,需要链接对应的libstdc++库才能够链接成功,当然这句话并不是绝对的,

因为链接是否成功主要看代码中的symbol是否都能够找到,如果C++文件中并没有调用到libstdc++中的内容,

那么即使不链接libstdc++也是可以直接链接成功的。

2.g++既可以用来编译.c文件,也可以用来编译c++文件。

(1)C++是C的超集,那么也就是说C代码同样可以支持,所以g++编译C代码完全不是问题。

(2)g++编译C++代码,g++在链接时是会自动链接对应libstdc++库的,不用我们显式加入-lstdc++编译选项了

3.有了上面的知识,我们就可以知道C和C++混编是一件很容易的事情了

gcc -c test1.c

gcc -c test2.cpp

gcc test1.o test2.o -o test -lstdc++

4.gcc编译静态库

gcc –c test1.c test2.c 生成.o目标文件

ar rcv libtest.a test1.o test2.o 将目标文件打包成库

5. gcc编译动态库

gcc -c fPIC test1.c test2.c 编译生成位置独立代码(-fPIC)

gcc -shared test1.o test2.o -o libtest.so 将.o文件打包成.so库

通常使用一条语句完成动态库编译:

gcc -fPIC -shared -o libtest.so test1.c test2.c

6. android编译静态库

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:=libtest

LOCAL_SRC_FILES := test1.c test2.c

LOCAL_MODULE_TAGS := optional

include $(BUILD_STATIC_LIBRARY)

7. android编译动态库

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:=libtest

LOCAL_SRC_FILES := test1.c test2.c

LOCAL_MODULE_TAGS := optional

include $(BUILD_SHARED_LIBRARY)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/79976240

osg android 库的编译与例子编译

1.教大家如何编译osg3.2的库及cygwin 的编译方式 2.教大家如何编译osg3.4的库及cmake的编译方式 3.教大家如何配置osg提供的android的例子
  • 2017年06月14日 09:00

【解决】缺少libstdc++.so.6库的原因及解决办法

【解决】缺少libstdc++.so.6库的原因及解决办法
  • qianlong4526888
  • qianlong4526888
  • 2014-10-15 11:29:44
  • 38949

解决yum安装报错Protected multilib versions

今天在云服务器上装nginx,需要先安装一些依赖库比如zlib, ,但是安装zlib时候报错。yum install -y zlib zlib-devel(-y 指的是如果需要选yes no的自动y...
  • shouldnotappearcalm
  • shouldnotappearcalm
  • 2017-03-20 23:16:19
  • 2216

【解决】centos缺少共享库:libstdc++.so.6

当在centos6.2下执行某些命令时,有缺少共享库的报错: error while loading shared libraries: libstdc++.so.6: cannot open sh...
  • qianlong4526888
  • qianlong4526888
  • 2013-04-09 21:55:22
  • 27168

在使用ambari进行安装部署过程中遇到的glibc问题

在使用ambari进行安装部署过程中遇到的glibc问题 使用 yum check rpm -e rpm -q 处理问题 报错信息如下: stderr: Traceback (most r...
  • zhang50303
  • zhang50303
  • 2018-01-09 14:33:35
  • 149

安装 GitLab6.x

安装环境:                     操作系统:    Ubuntu 12.4 LTS 英文                    数据库:        mysql V5.5.35  ...
  • xiaobin_HLJ80
  • xiaobin_HLJ80
  • 2013-08-24 01:52:31
  • 9267

libplist源码编译常见错误总结

常见错误: 1. no package ‘libxml-2.0’ not found. \ 解决办法:    sudo apt-get install libxml...
  • duval_yang
  • duval_yang
  • 2015-05-27 09:27:57
  • 939

Android系统编译过程中常见问题汇总

  • 2013年08月20日 12:56
  • 118KB
  • 下载

如何单独编译Android源码中的模块

  • 2012年08月22日 15:51
  • 17KB
  • 下载

Linux 下编译Android应用程序

一、编译整个项目     进入代码所在目录,执行 tybuild/start,然后根据提示选择项目和项目mk。 二、编译成功后单模块编译方式 在单模块代码所在目录执行: source tybuild...
  • u013278940
  • u013278940
  • 2015-03-16 14:36:09
  • 1220
收藏助手
不良信息举报
您举报文章:linux/android编译常见问题
举报原因:
原因补充:

(最多只允许输入30个字)