CMake簡介,打包so檔案,編譯實際專案 用valgrind測記憶體情況
CMake簡介和使用示例
CMake是常用的跨平臺編譯器。影象這塊在給服務端做開發時,常有兩個需求:
(1)程式碼打成.so包,供別人呼叫;
(2)編譯、測試,用valgrind測記憶體情況。
工程較大時,藉助CMake完成很方便。下面分別給出兩種情況下,CMakeLists.txt的簡單示例。
1. 藉助CMake打.so包
把目錄utils下的檔案打出.so包。
其中CMakeLists.txt內容:
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. utils_src)
add_library(utils SHARED ${utils_src})
set_target_properties(utils PROPERTIES output_name "utils")
注意:前面的關鍵字可以大寫也可以小寫,括號內的關鍵字必須大寫。
編譯:
cmake .
make
生成了共享庫libutils.so
2. 編譯實際的專案
專案sticker_me中檔案結構如下,其中build目錄用於生成編譯的結果。
它們之間的呼叫關係如下:
各個CMakeLists.txt如下:
./CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project(sticker_me)
add_subdirectory(src)
add_subdirectory(facedetect)
add_subdirectory(utils)
src/CMakeLists.txt:
find_package(OpenCV REQUIRED)
include_directories(facedetect utils)
aux_source_directory(. src_dir)
add_executable(sticker_me ${src_dir})
target_link_libraries(sticker_me ${OpenCV_LIBS} utils facedetect)
facedetect/CMakeLists.txt:
include_directories(utils)
aux_source_directory(. facedetect_dir)
add_library(facedetect SHARED? ${facedetect_dir})
set_target_properties(facedetect PROPERTIES output_name "facedetect")
target_link_libraries(facedetect utils)
utils/CMakeLists.txt:
aux_source_directory(. utils_dir)
add_library(utils SHARED ${utils_dir})
set_target_properties(utils PROPERTIES output_name "utils")
編譯:
cd build
cmake ..
make
藉助valgrind測試記憶體,log重定向到檔案log.txt中:
cd build/src
valgrind --leak-check=full --log-file=log.txt ./sticker_me
參考:
開發十年,就只剩下這套架構體系了!
>>>
簡單介紹:linux中so檔案為共享庫,和windows下dll相似;so可以共多個程序呼叫,不同程序呼叫同一個so檔案,所使用so檔案不同;so原檔案不需要main函式;例項,1.通過mysqlTest.c中的函式mysql(),生成一個libmysql.so連結庫#inc
首先使用下面指令生成libst.o
gcc -c -fPIC libst.c //-f後面跟一些編譯選項,PIC是其中一種,表示生成位置無關程式碼(Position Independent Code)
然後用
gcc -shared -fPIC -o l
下載後把壓縮包解壓出來,例如:D:\ndk,目錄下的ndk-build.cmd就是用來編譯的批處理命令。
這裡以D:\ndk\samples\hello-jni為例,開啟D:\ndk\samples\hello-jni\jni\hello-jni.c檢視程式碼:
/*
* Copyri
Tfrecord檔案是tensorflow專門設計的一種訓練樣本儲存格式,將訓練樣本打包成tfrecord格式後能夠加快檔案的讀取效率。所以訓練網路的第一步就是將自己的訓練集樣本打包生成tfrecord格式。本文主要介紹兩種tfrecord打包方式,這兩種方式的主要區別在於生
QQ交流群:611902811,有興趣的可以交流
IJKPlayer-android
優勢: 對ijkplayer的抽取值刪除了IjkVideoView.java類中幾個無關緊要的變數和方法,其他與ijkplayer本身一摸一樣。這樣ijkplay
Spring boot Maven 專案打包
使用Maven 實現多環境 test dev prod 打包
專案的結構
在下圖中可用看出,我們打包時各個環境需要分開,採用 application-環境.yml 的方式命名
環境配置開始
首先我們需要在app
下面是使用Intellij 打包jar檔案的步驟,之後會有執行jar檔案時遇到的錯誤。
打包完成。
==========================================================================
執行jar出現問
-y ../ecp3 +libext+.v\ //這句用於編譯ecp3資料夾中的.v檔案,如果模擬時找不到該資料夾,路徑新增詳細。
+incdir+ ../models/mem \ //開啟某資料夾。
修
本文轉自嵌入式Linux中文站
條件編譯
條件編譯即滿足某些條件的時候編譯某部分程式碼,常用於開發多個版本的程式,當滿足條件A時,編譯出免費版本的軟體,當滿足條件B時,編譯除vip版本的軟體,可以提高程式碼的複用率。條件編譯使用"預處理命令+巨集定義"來實現,更多巨集
我也面臨相同的問題,但目前還沒找到類似反編譯smali檔案的方法,一般得到dex檔案只需要用WinRAR或其他壓縮軟體開啟apk檔案就能得到。但也有例外好像,技術先進了,今天遇到個apk用WinRAR開啟異常,沒有dex檔案,所以得到原始碼的計劃就泡影了,至少用目前常規的方
前期:已安裝好hadoop叢集和spark叢集,hadoop2.6.5,spark2.3.1,jdk1.8. scala2.1.0
第一步:在idea編寫scala程式,並且要打包(pom檔案的build標籤中配置好maven打包程式碼,可以定義主類也可以在提交的時候再定義){補充:可以在s
首先通過兩種方法得到檔案的大小,位元組為單位,根據這個大小使用malloc分配固定的空間buffer,二進位制流讀入檔案,把二進位制流寫入buffer中,buffer輸出寫入到新的檔案。 原始檔1.txt,輸出檔案1.txt.txt 環境為Ubuntu 16.04,gcc
#incl django設定並獲取cookie/session,檔案上傳,ajax接收檔案等的方法:
views.py檔案:
from django.shortcuts import render,HttpResponse,redirect
import datetime
import json
from
C#如何操控FTP
出處:http://www.cnblogs.com/rond/archive/2012/07/30/2611295.html,http://www.cnblogs.com/rond
關於FTP的應用免不了要對FTP進行增刪查改什麼的。通過搜尋,整理和修改 redis 安裝
解壓:
[[email protected] software]# tar -xvf redis-3.2.11.tar.gz
進入redis根目錄:
[[email protected] software]# cd redis-3.2.11/
編譯安裝:
[[
最近用自己的硬碟當做儲存工具,突然發生了問題,就是隻能看硬盤裡的資料卻無法修改或者複製內容,查了好多辦法都不行,最後看到我掛載硬碟時,硬碟資料夾出現×號,這才想起來可能由於許可權問題,被設定為只讀模式,所以解決辦法自然就是給許可權啊:
1 pwd檢視硬碟的
(單機demo)將一個專案部署到nginx上面,修改hosts檔案,使用域名訪問專案
安裝nginx,網上教程一大推,就不囉嗦了
進入nginx修改nginx安裝目錄下的nginx.conf檔案,新增如下內容 修改alias 後面靜態資源的位置,修改server_name
安裝: pip install flask
web開發: app.py
from flask import Flask,request,make_response
from flask import jsonify
app = Flask(__name__)
UPLOAD_FOL 專案地址:LeetCodeCrawler
概述
現在一般或多或少都會在LeetCode上面進行刷題練習,然後將程式碼放在GitHub上,當然我也一樣,這是我的刷題倉庫Algorithm。刷完題如果每次都去重新編輯README.md檔案進行更新,未免顯得有些費時,因此有了需求,個人就 相關推薦
CMake簡介,打包so檔案,編譯實際專案 用valgrind測記憶體情況
linux下gcc編譯 .c檔案生成動態連結庫 .so檔案,並測試呼叫該連結庫
Linux編譯.so檔案,呼叫.so檔案
Windows下編譯使用Android NDK,呼叫SO檔案
打包tfrecord檔案,並讀取
ijkPlayer支援https和增加沉浸式帶有so檔案,EXOplayer升級到r.2.8.4
Spring boot 專案分環境 Maven 打包,動態配置檔案,動態配置專案
Intellij打包jar檔案,“java.lang.SecurityException: Invalid signature file digest for Manifest main attrib
Modelsim 模擬時,在do檔案新增編譯某個檔案的語句
條件編譯,標頭檔案,靜態庫,共享庫與多檔案程式設計
android反編譯APK後,是smali檔案,能反編譯成dex檔案
IDEA編寫wordcount,讀取hdfs檔案,執行在Spark叢集例子
C語言 檔案大小,分配空間,讀入檔案,寫入檔案,實現複製的功能
django設定並獲取cookie/session,檔案上傳,ajax接收檔案,post/get請求及跨域請求等的方法
C#如何操控FTP,獲取FTP檔案或資料夾列表,獲取FTP檔案大小,FTP上傳,FTP刪除檔案,FTP新建資料夾、刪除資料夾
redis安裝,修改配置檔案,多例項部署 redis-server
ubuntu 掛載硬碟時,只能讀取檔案,不能寫入的解決辦法
(單機demo)將一個專案靜態原型部署到nginx上面,修改hosts檔案,使用域名訪問專案
初識flask,上傳檔案,uwsgi部署
爬取LeetCode資料,生成README檔案,美化GitHub倉庫