windows下使用AndroidStudio编译so

DK 开发或者老的项目都是基于 Android.mk、Application.mk 来构建项目的,但从 AS 2.2 之后便开始采用 CMake 的方式来构建 C/C++ 项目,采用 CMake 相比与之前的 Android.mk、Application.mk 方便简单了许多。

#1. 指定 cmake 的*小版本
cmake_minimum_required(VERSION 3.4.1)

#2. 设置项目名称
project(demo)

#3. 设置编译类型
add_executable(demo test.cpp) # 生成可执行文件
add_library(common STATIC test.cpp) # 生成静态库
add_library(common SHARED test.cpp) # 生成动态库或共享库

#4. 明确指定包含哪些源文件
add_library(demo test.cpp test1.cpp test2.cpp)

#5. 自定义搜索规则并加载文件
file(GLOB SRC_LIST “*.cpp” “protocol/*.cpp”)
add_library(demo ${SRC_LIST}) //加载当前目录下所有的 cpp 文件
## 或者
file(GLOB SRC_LIST “*.cpp”)
file(GLOB SRC_PROTOCOL_LIST “protocol/*.cpp”)
add_library(demo ${SRC_LIST} ${SRC_PROTOCOL_LIST})
## 或者
aux_source_directory(. SRC_LIST)//搜索当前目录下的所有.cpp文件
aux_source_directory(protocol SRC_PROTOCOL_LIST)
add_library(demo ${SRC_LIST} ${SRC_PROTOCOL_LIST})

#6. 查找指定库文件
find_library(
log-lib //为 log 定义一个变量名称
log ) //ndk 下的 log 库

#7. 设置包含的目录
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/include
)

#8. 设置链接库搜索目录
link_directories(
${CMAKE_CURRENT_SOURCE_DIR}/libs
)

#9. 设置 target 需要链接的库
target_link_libraries( # 目标库
demo

# 目标库需要链接的库
# log-lib 是上面 find_library 指定的变量名
${log-lib} )

#10. 指定链接动态库或者静态库
target_link_libraries(demo libtest.a) # 链接libtest.a
target_link_libraries(demo libtest.so) # 链接libtest.so

#11. 根据全路径链接动态静态库
target_link_libraries(demo ${CMAKE_CURRENT_SOURCE_DIR}/libs/libtest.a)
target_link_libraries(demo ${CMAKE_CURRENT_SOURCE_DIR}/libs/libtest.so)

#12. 指定链接多个库
target_link_libraries(demo
${CMAKE_CURRENT_SOURCE_DIR}/libs/libtest.a
test.a
boost_thread
pthread)

常用变量

%title插图%num
构建 C/C++ Android 项目

以静态库构建项目

1.定义 native 接口

%title插图%num
2.编写 cpp

%title插图%num
3.编写 CmakeLists.txt 文件

%title插图%num
4.app/build.gradle cmake 配置

以动态库构建项目

1.代码加载 so 库到手机中

%title插图%num
2.so 库导入在 main/jniLibs 下

%title插图%num

3.CmakeLists.txt 配置

%title插图%num

4.在AS上编译运行,截图省略

阿里云服务器操作系统选择秘诀(含Windows和Linux)

目前所用的虚拟主机显得有些吃力了,所以*近想入手阿里云服务器,进入阿里云服务器购买页面看到服务器系统选择那里就蒙了,特么这些E文是啥意思,网上找了一个阿里云服务器操作系统选择攻略,分享如下

当前阿里云总共提供了两大类17种操作系统选择。站长一看到这么多操作系统一般*反应就是不知所措,那么应该如何选择适合自己的服务器呢?这篇文章来为大家解答。

Windows篇
阿里云提供了6种window系统,涵盖了Server 2003 sp2以及Server 2008 R2这两大类操作系统。其中又分为了32位和64位

(1)如何选择32位还是64位

32位系统相比64位系统,*主要的限制体现在内存的大小上。因为32位本身的限制,其*大只可支持到4GB内存,如果您的网站要使用高于4GB的内存或者以后有扩充内存寻到4GB以上的打算,请使用64位操作系统。

(2)选择2003还是选择2008

对于windows来说,我个人建议是选择版本越高的越好。相对来说新版本漏洞相对来说更少,而且IIS 7.5相对于IIS6提供了更多的功能以及更方便的控制台。但是考虑到大家的机器配置不同,在此给出一下几种选择:

配置低于双核 2GB内存:选择server2003 不装数据库

配置双核4GB: server 2003   mssql 或者 server 2008 R2 不带数据库

配置高于双核 8GB:serever 2008 R2  mssql

建议如果大家要在云服务器上跑数据库,尽量选择大内存配置,或者降低配置去选用RDS

(3)中英文、安全加固版如何选择

这个就依据大家各自的喜好来了,在此不多说了

至于Windows服务器配置教程,因为网上教程很多而且相对于Linux来说Windows配置难度更低,所以Windows的配置教程会比较晚的放出。

Linux篇
这个是本片教程的重点,叫大家如何来选择Linux服务器。

Linux阿里云提供了两大类共11种,下面让我们来介绍具体的区别。

(1)这些Linux版本有什么区别?
Linux按照大类来分,阿里云提供了基于Debian跟Red Hat两大类操作系统,具体分类如下:

Debian:Ubuntu Debian

Red hat:Red Hat Centos

(2)这两大类有什么区别
Debian:用的deb包,使用APT包管理系统。同时Debian提供了大多数软件比较新的版本,并且提供了更多的软件包(相对于原版Red Hat)。Debian的优点在于更新迅速,软件包完善(Ubuntu尤其),操作便利。缺点是部分时候稳定性欠佳,跟进*新软件有可能存在Bug。

Red Hat:用rpm包,使用yum包管理系统。相对于Debian来说,Red Hat的一大特点就是慢。大部分软件停留在稳定版本,而且相距*新版版本也差较多。而且某些新版软件的一些新特性支持也比较慢,比如php-fpm。因为Red Hat是面向企业用户提供的操作系统,所以在稳定性上十分突出,一般在新功能或稳定性的选择上更倾向于后者。只有当某个功能完全确定稳定了,才会加入到系统里。优点是系统稳定,技术文档完善,如果付费的话能得到企业级别的技术支持。缺点是软件包比较老旧,而且一些较新功能会欠缺。

总结一下:

如果你喜欢尝鲜,喜欢用*新的功能或喜欢折腾系统,那么Debian是个更好的选择。相对于Red Hat的内核还停留在2.6,Debian早已迈入3.0大门。

如果你追求稳定,不想经常升级系统软件不爱折腾,那么Red Hat是你更好的选择,出色的稳定性以及丰富的文档支持一定可以满足你的需要,当然太新的功能不要抱有幻想。而且Red Hat完善的文档可以免去你到处查找教程、论坛之苦

上手难度 Ubunt<Debian<Redhat=Centos

Linux相关教程会在以后陆续放出 敬请期待

(3)Debian与Ubuntu的选择
Ubuntu是基于Debian所开发,可以简单地认为Ubuntu是Debian的功能加强版。与Debian相比,Ubuntu提供了更人性化系统配置,更强大的系统操作以及比Debian更激进的软件更新。Ubuntu与Debian比较,可以认为Debian更趋向于保守一些,Ubuntu对新手友好度更高,上手更容易。用过Ubuntu的都会体会到它的易用,反之如果用过Ubuntu再换到别的系统,都会觉得不适应,Ubuntu真的很方便。

个人建议,如果你打算选择Debian类的,建议选择Ubuntu。Ubuntu提供了更好的操作,更激进的软件更新,更方便管理软件以及相差无几的稳定性。如果你想用Debian类,不想放弃稳定,那么请选择Debian。与Ubuntu相比Debian的稳定性更佳,但是也就存在了Red Hat与Debian相比类似的问题。

关于Ubuntu版本选择:

Debian就给了一个版本,就不说什么了,重点说一下Ubuntu。

不知道阿里云工程师当初怎么想到的还是他自己做镜像时候用的10.10,竟然有10.10?

在解释下Ubuntu的版本支持时间。Ubuntu普通版本只提供18个月的技术支持,过期则不管。LTS服务器版本提供长达五年的技术支持。Ubuntu 10.10是个普通版,现在已经过了支持周期了。如果你用了,很好,你会发现你安装不了任何软件,10.10的软件已经从Ubuntu软件源中被移除了。所以建议大家选择12.04 LTS版,提供长达5年的技术支持,可以确保在静候相当长的一段时间内你的服务器可以继续收到系统升级补丁以及可用的软件源。顺便再吐槽一下制作这个ISO的,能不能有点专业精神啊!给个没软件源的让我们装完了放那里看么?

(4) Red Hat和Centos 选择
Red Hat跟Centos就没那么多差别了。

Red Hat是付费操作系统,你可以免费使用,但是如果要使用Red Hat的软件源并且想得到技术支持的话,是要像Windows那样掏钱的,所以大家可以理解为Linux中的Windows。这么做符合开源精神,免费使用,服务收费。

Centos是Red Hat的开源版本。一般在Red Hat更新之后,Centos会把代码中含有Red Hat专利的部分去掉,同时Red Hat中包含的种种服务器设置工具也一起干掉,然后重新编译就是Centos。

从某种意义上说,Centos几乎可以完完全全看成是Red Hat,这两个版本的rpm包都是可以通用的。

那么这样问题就简单了

如果你舍得花钱买技术支持,并且想得到完善的技术服务,请去买Red Hat的授权,你会得到如Windows一般强大的技术支持的。

如果你只想用,什么付费技术支持什么专有软件都是浮云,那么用Centos吧。

Centos 5 对应 Red Hat 5

Centos 6 对应 Red Hat 6(阿里云没提供这个版本)

同时Red Hat技术支持的文档也是同样可以套用在Centos上的,命令都不用改(毕竟本质上来说一样么)。

Red Hat系的*大特点就是稳定。因为Centos需要在Red Hat更新后才能更新,所以一般补丁更新速度要落后于Red Hat,当然这个对大多数人来说等一段时间不是什么大问题。

Red Hat是对Linux内核代码贡献度*的公司,2012年统计Red Hat贡献了超过10%的代码,所以Red Hat可以说是当前*稳定的Linux版本。Centos秉承Red Hat良好的衣钵,也有一流的稳定性,这点是Debian所无法比拟的。同样团建更新速度Red Hat会慢很多很多,但是一旦更新的话就是稳定版本,稳定性压倒一切。

对于阿里云Centos的选择,建议选择Centos 6.3版本,带来了更多的新特性以及更多的新功能。

除非你的软件需要php 5.1的环境,那么就选择Centos6.3。如果网站需要支持php5.1,只能选用Centos 5。

至于具体版本选择,建议php 5.1用户选择Centoss 5.8,其他的用户则为Centos 6.3

另:想用Nginx也请使用Centos 6.3

以上就是系统选择篇,如果大家还有什么不明白的我会慢慢补充进去。

*后再再总结:

求稳定选择 Debian

稳定中更新 Ubuntu

更新速度N快,有付费支持 Red hat

更新速度稍慢 Centos

一般企业里的服务器采用的是什么系统?windows?还是linux?

首先说windows和Linux系统在企业的服务器中都是有使用的,关于一个企业是选择windows作为服务器系统还是Linux作为服务器系统还是要看企业对于服务器的需求和一些技术上的需要。

1、简要说一下windows系统和Linux系统。windows系统相信大家都不陌生,现在大家基本上使用的都是以windows操作系统为主,而服务器上使用的windows操作系统一般指的的是windows的服务器版本系统:windows server 系列。windows server系列也有很多的版本,如windows server2003、windows server 2008等。这些服务器版本的windows和普通windows版本的不同在于其是根据服务器需求进行开发的,如支持更大的内存、支持一些服务器的策略设置、支持服务器集群等,这些功能都是针对服务器的功能,总之windows server版本就是一个适合服务器的操作系统版本,其功能大多都是针对服务器的。再说一下Linux系统,Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。以上是专业的解释,简单说Linux是一个免费的操作系统,其也是非常的好的支持服务器环境,且其不太适合图形化操作更适合命令行操作,而windows server是收费的系统,且其主要的还是图形化操作方式。

2、公司选择什么系统之性能和易用性。因为Linux是开源的操作系统,其功能可以自己定义和修改,且其没有图形化界面,总而言之Linux的一些特性使得Linux的效率要比windows高且其使用起来更加灵活,因为Linux的严格的用户权限管理机制使得Linux更加安全。虽然windows的图形界面会在一定的程度上降低windows的性能,但是图形化的界面也为windows带来了操作简单方便的特点,且大家都是使用windows出身,那么 windows server系统的操作学起来要比Linux简单的多。总结:个人认为Linux比windows server的性能更好,而windows server比Linux有更好的易用性。

3、公司选择什么系统之用途和技术搭配和成本。关于服务器的用途决定了其安装什么操作系统,比如公司需要搭建一台服务器进行系统网络和局域网的域管理,那么此时应该使用的当然是windows server操作系统。在比如公司的需要对外发布一个web网站,公司决定使用asp.net作为网站后台,我们都知道asp.net的*好组合是windows server + IIS +sqlserver数据库,那么此时公司的机房服务器也可能要安装windows server 系统,而我们要发布一个php的网站,那么我们也都知道php的*佳运行环境是lamp即Linux+Apache+mysql数据库+php,此时可能我们需要的采用Linux作为操作系统。

再说一下成本,Linux的是开元不收费的系统,而windows server是收费的操作系统,但是公司请一个Linux的运维管理员的成本要高于windows server的管理员,这些问题都是公司需要考虑平衡的,毕竟公司要考虑公司的利益。

*后,以上就是个人对于公司选择什么操作系统作为服务器操作系统的一些看法,也可能有很多其他的因素影响着这个选择,以上只是个人的一些看法和其中的一些因素。

生成项目目录结构(based on windows system)

描述:

作为程序员,在工作中,我们经常会有需求,需要罗列出项目的结构图;如果手工来整理的话,太过浪费时间,其实我们可以借助tree命令来快速生成目录结构。

本文主要介绍一下,基于windows系统,如何快速生成目录结构的方法。

 

步骤:

1、开始 -> 运行 -> cmd -> 进入DOS命令行界面;

2、进入需要生成目录结构的项目主目录;

%title插图%num

3、输入命令行 tree /f > list.txt (其中list.txt是*终生成目录结构的文件名,可以自定义);

%title插图%num

4、在项目目录下,便会生成一个list.txt文件,如下图:

%title插图%num

 

本文只是基于windows系统来进行介绍,在Mac或者Linux下也可以使用tree列出项目结构,后续再介绍。

安装Maven 3,需要安装jdk1.7及以上版本

Maven的下载与安装(Windows版本)

安装Maven 3,需要安装jdk1.7及以上版本

 

具体步骤如下:

1、进入官网:http://maven.apache.org/download.cgi,如下图红框部分

其中:

apache-maven-3.5.4-bin.zip是压缩包,解压到安装路径即可

apache-maven-3.5.4-src.zip是maven源码

%title插图%num

 

2、将下载的压缩包解压至安装目录下

%title插图%num

 

3、配置环境变量MAVEN_HOME

%title插图%num

 

4、将【;%maven_home%\bin】追加到PATH路径中

(一般这样配置就可以了,但是有时候会提示mvn不是内部命令,那可能是在设置path变量时,覆盖了原有的值,这时候只要将之前配置的【;%maven_home%\bin】改为【;%SystemRoot%\system32;%maven_home%\bin】就可以了)

%title插图%num

 

 

5、在cmd中输入以下命令mvn -version,看是否配置成功

%title插图%num

 

Maven数据仓库的配置:

1、进入Maven的安装路径 -> conf -> 找到settings.xml文件,打开文件,找到localRepository标签,该标签默认是被注释掉的

保留原有的注释,新添加该标签,对应的路径可以自定义

(备注:

a.如果不设置,默认在C盘

b.将settings.xml复制一份到以下红框配置的路径中)

%title插图%num

 

2、配置中央仓库的镜像(改用阿里)

复制代码
1 <mirror>        
2   <id>nexus-aliyun</id>
3   <mirrorOf>central</mirrorOf>
4   <name>nexus-aliyun</name>
5   <url>http://maven.aliyun.com/nexus/content/groups/public</url>
6 </mirror>
复制代码

 

 在Eclipse中集成Maven

1、在preferences中进行配置,如下图:

%title插图%num

%title插图%num

 

 

2、点击File–>new–>other–>输入maven–>Maven Project,新建Maven项目

%title插图%num

 

错误信息处理:

1、index.jsp有报错,需要在pom.xml中导入 javaee-api.jar

1 <dependency>
2   <groupId>javax</groupId>
3   <artifactId>javaee-api</artifactId>
4   <version>7.0</version>
5 </dependency>

 

2、pom.xml*行报错:“org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)”

解决方案:

a)Eclipse -> Help -> Install New SoftWare

分别输入:

MavenArchiver

https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST/

%title插图%num

 

b)按照提示一直next

c)重启eclipse之后,执行maven-update project

 

以上是在windows系统中对于Maven的安装过程,以及在安装配置过程中出现的一些问题的整理,希望能够给有需要的同仁带来一些帮助。

阿里云windows服务器安装mysql

1.首先下载mysql https://dev.mysql.com/downloads/mysql/5.7.html#downloads
根据电脑属性选择。

%title插图%num

2.解压C:\mysql-5.7.28-winx64,配置环境变量。
3.添加my.ini在解压目录下。内容如下:

%title插图%num

4.进入C:\mysql-5.7.28-winx64\bin以管理员身份打开cmd,而后输入mysqld install,再输入mysqld –initialize-insecure –user=mysql,而后启动net start mysql,显示启动成功则正确。
5.详细可参考这篇博客https://blog.csdn.net/weixin_38592644/article/details/86713529
6.安装好后,需要远程连接数据库,我们用Navicate测试,刚开始可能连接不上,原因有以下几点:
(1)没有开放端口,需要在阿里云控制台里面找到配置端口的地方,打开mysql3306端口。
(2)没有开放连接数据库的权限,如果想从任何主机连接到mysql数据库,则可以这样写:
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
如果指定主机ip号可以访问则可以这样修改:
GRANT ALL PRIVILEGES ON . TO ‘root’@‘ip’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
(3)防火墙是否关闭,关闭防火墙。

本地windows连接阿里云服务器

在购买阿里云服务器之后,可以进入管理服务器进行设置,要想通过windows登录到Ubuntu16.04阿里云服务器上需要进行一下步骤:

1. 从管理控制台进入本实例安全组。

%title插图%num

2. 点击配置规则。

%title插图%num

3. 点击添加安全组规则。

 

%title插图%num

4. 在弹出的框中分别按以下画红色线的部分的方式设置。

%title插图%num

至此可以通过申请的云服务器的公有ip进行访问了。

5. 下载XShell。在安装完之后的窗口中依次点击文件-新建回话-输入云服务器主机地址。

%title插图%num

6. 点击确定,在接下来弹出的对话框中输入用户名和密码,该用户名和密码是之前申请云服务器时填写的。

7. 连接成功后会弹出黑色的框框啦,貌似云服务上的Ubuntu是没有图形界面的。