只使用NDK將C C 編譯成SO

2021-09-26 13:52:20 字數 1557 閱讀 1407

在自帶的ndk裡面有個ndk_helper目錄,除了android.mk檔案,還有一些示例。我這裡只取三個檔案作修改後即可用。

在ndk-bundle下新建乙個名為jni的目錄,將上面的這些檔案都複製乙份到裡面。這是因為從ndk-r4開始,只需將檔案放在jni下即可執行。為了能編譯通過,先將複製過來的jnihelper檔案裡面的**都刪掉,只留必要的日誌、建構函式等。

必須起名為jni,否則在編譯的時候會拋錯誤資訊:

please define the ndk_project_path variable to point to it.

android.mk

#每個android.mk檔案都必須以local_path開始,my-dir返回包含android.mk的目錄路徑

local_path:= $(call my-dir)

#負責清理一些local_***,但不清理local_path,這個清理動作是必須的

include $(clear_vars)

#必須定義,以表示android.mk中的每個模組的名字,不能有空格.例如這裡為ndk_helper,則生成的so名字為libndk_hepler.so

local_module:= ndk_helper

#必須定義,以表示要打包的c/c++檔案,多個檔案空格隔開

local_src_files:= jnihelper.cpp

#表示動態編譯庫,也就是生成so

include $(build_shared_library)

#使用的ndk庫版本號,一般和sdk對應,各個版本在platforms目錄下

#如何鏈結c++標準庫,stlport_static表示靜態鏈結、stlport_shared表示動態鏈結

#編譯為release版本

jnihelper.h

#pragma once

namespace ndk_helper

;}

jnihelper.cpp

#include #include "jnihelper.h"

namespace ndk_helper

jnihelper::~jnihelper()

}

cd到jni裡面ndk-build即可

成功,so所在路徑

使用cython將py檔案編譯成so檔案

一 環境準備 安裝cython,以及gcc編譯環境 wget python get pip.py pip install cython yum install y gcc python devel 二 編寫測試指令碼 test.py,內容如下 import os def test print os....

Python 將py檔案編譯成so檔案

1.安裝cython,以及gcc編譯環境 root localhost pip install cython 2.編寫測試指令碼 test.py def test print hello python def add a,b print a b return a b 1.編寫setup.py檔案,與...

linux下將c 編譯成so,呼叫該so檔案

在其他資料上增加了過程中遇到的問題。so檔案為動態鏈結庫檔案,與windows下的dll檔案相當,linux下系統so檔案一般儲存在 usr lib中。下面就說明一下如何生成c 程式的so檔案,以及如何在c 程式中呼叫該so檔案 test.h ifdef cplusplus extern c int...