原创 Linux下指定so動態庫的加載路徑的5種方法!!!

   -Wl,-rpath=linux中真實運行的路徑 重點:編譯時兩個路徑 (一個是編譯用到的庫的路徑,另外一個是linux真實運行環境時用到的路徑)如何編譯?               不要用絕對路徑,編譯用到的庫的路徑比如是/ou

原创 交叉編譯(以libmxml.a舉例,在網上找到相應的壓縮包以後)

交叉編譯  (/lib:動態庫和靜態庫,將最終生成的lib和include文件夾拷貝出來提供給程序編譯和程序運行時使用。) 在ubuntu中使用minixml自帶的configure配置生成Makefile並編譯libmxml庫。 2.1

原创 linux動態庫鏈接語句(設置) export LD_LIBRARY_PATH

在./執行程序時會提示找不到庫, 此時需要在裏面手動敲打一個export命令例如:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/mqtt/MQTT-c/lib 紅色字體是你需要替換的動態庫絕對

原创 一個結構體的雙指針和一個結構體的數組指針使用例子(都可以)

1 結構體的數組指針 DataFormatStr g_out_data_buf[2]; DataFormatStr g_int_data_buf[20]; typedef struct {     UINT32 di;     UINT3

原创 回調函數的使用總結(非常重要)

使用場景:  如果本人要調用別人的庫,而別人的庫有時需要數據主動給本人,這時可以需要用到回調函數。 別人的庫 假設是 a.h 和a.C 自己的文件是   b.h和b.c 在a.h和a.c裏面需要完成的是兩個步驟: (1)        

原创 memcpy使用函數注意(如果格式不一樣如:memcpy(&A[0],(char *)&B,4))

memcpy使用函數注意               如果格式不一樣,則需要強制轉換下:              如  char A[4];                    int  B,                如果需要c

原创 linux下守護進程啓動一個新應用進程的區別system、open和execl (execl在Ubuntu和linux執行的區別)

用C都可以調用,啓動一個應用,在守護進程啓動一個進程只能用 execl,  systme和popen與execl實際上差別很大。 system:啓動另外一個應用之後,新應用的進程獨立,當前進程也活着。即有兩個互不影響的進程。 execl:

原创 如何在linux中運行中定義lib的路徑在makefile裏面

場景:比如執行程序testlog需要用到liblog.so,但是testlog在運行當中提示找不到所需要的動態庫文件liblog.so(放在了/media/dc/mt_tmnl698/lib_zt目錄) 此時需要在編譯testlog時的m

原创 memset賦值特別需要注意的地方

typedef unsigned short     Long_unsigned; typedef unsigned char     Unsigned; //時間日期 typedef struct datetime_s {     Lo

原创 定義的結構體裏面如果有鏈表,定義一個變量切記陷阱(需要用指針方式這樣方便分配給鏈表空間)!

例子 如下定義了一個結構體,結構體裏面包含鏈表List  scheme_frame_list,那麼定義此結構體變量時不可以用SCHEME_CONTENT aa;(不可以,因爲沒有給鏈表分配空間) 需要定義爲指針類型,如:  SCHEME_

原创 Linux下指定so動態庫的加載路徑的5種方法種的指定環境變量方法詳解!!!(.bashrc和 /etc/profile )

首先簡單說一下什麼是環境變量?環境變量簡單的說就是當前環境下的參數或者變量。如果說的專業一點就是指在操作系統中用來指定操作系統的一些參數。        舉個我們最常見的環境變量 —— PATH,它的用途就是當用戶要求系統運行一個程序而沒

原创 Linux命令修改文件名和文件夾名

Linux修改文件名 語句:mv oldFileName  newFileName 示例:我想把 aaa1.txt修改爲 bbb1.txt    示例語句:mv  aaa1.txt  bbb1.txt 把當前目錄下的file1文件名改成f

原创 Linux下指定so動態庫的加載路徑

一、庫文件的搜索路徑: 1、在配置文件/etc/ld.so.conf中指定動態庫搜索路徑(需要添加其它庫文件的路徑,在文件的最後添加具體的路徑即可 [ 如:/usr/local/lib ],添加後保存退出,然後在命令行ldconfig 2

原创 UDP和TCP總結

  INADDR_ANY 、INADDR_LOOPBACK 、INADDR_BROADCAST這三個常量在文件中的定義如下: #define INADDR_ANY (u_long)0x00000000 #def

原创 linux編譯:提示/usr/bin/ld: can not find -lsqlite3 的解決辦法

編譯程序提示缺少sqlite3的情況下,如果在其他arm編譯器下有現成的庫,可以直接拷貝過來。 sudo cp /opt/arm-2008q3/arm-none-linux-gnueabi/libc/armv4t/lib/libsqlit