2019年1月2日 星期三

[Linux] 切割檔案

我們可以透過split指令將檔案切割成數個小檔案
/* 假設我們有一個檔案hugefile.iso,我們可以透過以下指令將此檔案以每100MB切割一個檔案出來 */
$ split -b 100M hugefile.iso "split_file"
/* 執行完上述指令,便會將原先的hugefile.iso切割成數個檔案名稱為split_fileXX的檔案,XX為檔案的結尾,預設會以兩碼英文字母順序產生 */

Linux合併檔案
$ cat split_file* > new_file

Windows合併方式
$ copy /b split_fileaa+split_fileab+split_fileac new_file

2018年12月20日 星期四

cmake連結靜態函式庫


add_library(myStaticLib STATIC IMPORTED)
set_property(TARGET myStaticLib PROPERTY IMPORTED_LOCATION /your_static_library_path
# 加入一個myStaticLib並設定靜態函式庫的路徑


target_link_libraries(myAP myStaticLib)
#最後將程式與myStaticLib做連結

cmake簡單編譯範例

程式資料夾下包含兩個檔案

  • sayHello.cpp
  • CMakeLists.txt

sayHello.cpp
#include <iostream>

int main()
{
    std::cout << "Hello world" << std::endl
}


CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(sayHello)
add_executable(sayHello, sayHello.cpp)

編譯方式
$ mkdir build
$ cd build
$ cmake ..
編譯完成後即可在build資料夾下找到sayHello執行檔

gcc/g++建立動態與靜態函式庫

程式範例

sayHello.cpp
#include <iostream>

void sayHello()
{
    std::cout << "Hello" << std::endl
}


1. 動態函式庫
$ g++  -fPIC -c sayHello.cpp -o sayHello.o
/* 加上-fPIC是要產生Position-Independent Code,可以避免與函式庫鏈結時發生錯誤 */
$ g++ -shared -o libsayHello.so sayHello.o

1. 動態函式庫
$ g++  -c sayHello.cpp -o sayHello.o
$ ar rcs libsayHello.a sayHello.o

vim常用設定

設定檔位置
$ vim ~/.vimrc


設定Tab寬度
set tabstop=4

[Linux] 切割檔案

我們可以透過split指令將檔案切割成數個小檔案 /* 假設我們有一個檔案hugefile.iso,我們可以透過以下指令將此檔案以每100MB切割一個檔案出來 */ $ split -b 100M hugefile.iso "split_file" ...