需要将开源入侵检测(C++)项目snort移植到Android中,在linux环境下搭建了ndk,已经能用ndk-build将简单.c文件生成,so,但snort项目里面包含太多的.cc,.h,.text,.cmake等文件,能用ndk直接一次性编译整个snort文件夹让他生成一个snort.so文件吗,如果不能的话需要将包里面每个.cc文件都编译一遍,然后再打包起来?想的我头发都掉光了,在网上还看到了用arm -gcc编译的,如果不用ndk的话,用arm gcc能行得通吗 急切希望大神来解答

解决方案 »

  1.   

    现在AS集成了C++的编译环境   你试试创建一个带C++的项目  然后把C++代码放里面试试以上是基于本人少量混合编程的经验下发表的猜想型建议   仅供参考
      

  2.   

    snort包里有几百个包几万行代码。。一个一个往里放工作量是不是太大了··
      

  3.   

    snort包里有几百个包几万行代码。。一个一个往里放工作量是不是太大了·· 
      

  4.   

    snort包里有几百个包几万行代码。。一个一个往里放工作量是不是太大了·· 
    会生成一个cpp文件夹   copy里面就行了
      

  5.   

    不过CMakeLists.txt里面貌似是要把文件列一下的。。  没搞过这么复杂的。。
      

  6.   


    直接在AS里面用jni调用的话  好像还要改C++代码的方法名吧,比如把showhello改成java_com_233_helloword_showhello等等这样一改就又要改好多地方。。因为不是太懂C++的知识,所以就害怕要改snort的代码。。就想能不能用.so库来解决。。
      

  7.   

    看能对接口进行封装吗,使用jni方式
      

  8.   


    直接在AS里面用jni调用的话  好像还要改C++代码的方法名吧,比如把showhello改成java_com_233_helloword_showhello等等这样一改就又要改好多地方。。因为不是太懂C++的知识,所以就害怕要改snort的代码。。就想能不能用.so库来解决。。这样修改是为了给Java代码调用的 C++内部代码不用变
      

  9.   


    直接在AS里面用jni调用的话  好像还要改C++代码的方法名吧,比如把showhello改成java_com_233_helloword_showhello等等这样一改就又要改好多地方。。因为不是太懂C++的知识,所以就害怕要改snort的代码。。就想能不能用.so库来解决。。这样修改是为了给Java代码调用的 C++内部代码不用变snort程序的运行还需要daq等其他六个包的支持,我在想能否直接用arm-linux-gcc编译成可执行程序,然后把所有的包都push到Android中去,直接在手机中运行(我是不是有点异想天开了)
      

  10.   

    这种移植本身就是需要花大量时间与精力的.如果你原来的c++项目就是在liunx环境下的, 还好一点.  
    如果不是, 那么要做的工作更多.
    还有就算是liunx环境, 不同系统版本, 也可能有很大不同.
    android更是奇葩, 各种定制,阉割rom.  
    所以要移植到android中.   可以把整个项目的cpp放到AS中的cpp文件夹下, 然后在MakeList中添加一下路径等配置.  然后看能否编过. 能编译过, 再考虑接口问题.
    接口肯定是重写了, 如果对外的接口非常多, 比如说有几千个, 那么你悲剧了.   不能一步登天. 
      

  11.   


    请问 能否编过在这里是什么意思呢  是指生成了.so文件?还是其他什么?刚接触这方面不太了解,还有庆幸的是要移植的c++项目就是在linux下的,但是项目的运行还需要再linux环境下搭建环境,比如安装daq等几个必要的包,那这几个包要如何处理呢?直接不用管他?还是也要放进AS里面进行编译?麻烦您了
      

  12.   

    编译过, 是指没有语法错误.  也可以说是生成so吧.daq包肯定也需要在android系统中安装的.