UNIX下C語言動態連結庫SO
#
# makefile for application preconsole program
#
#
.SUFFIXES:.c
.SUFFIXES:.cpre
SYBASEDIR=/sybase
CICSDIR=/usr/lpp/cics
PDTDIR=$(HOME)/appl/pdt
APPLDIR=$(HOME)/appl
DLLEXPDIR=../exp
DLLLIBDIR=$(HOME)/bin
BSCDIR=$(APPLDIR)/sc/bsc
SCDIR=$(APPLDIR)/sc/
ABSDIR=$(APPLDIR)/cs/abs
APPDIR=$(APPLDIR)/cs/app
BILDIR=$(APPLDIR)/cs/bil
BUGDIR=$(APPLDIR)/cs/bug
CHKDIR=$(APPLDIR)/cs/chk
COMDIR=$(APPLDIR)/cs/com
CTMDIR=$(APPLDIR)/cs/ctm
ERRDIR=$(APPLDIR)/cs/err
EUMDIR=$(APPLDIR)/cs/eum
FMTDIR=$(APPLDIR)/cs/fmt
PDGDIR=$(APPLDIR)/cs/pdg
RPTDIR=$(APPLDIR)/cs/rpt
SECDIR=$(APPLDIR)/cs/sec
SYSDIR=$(APPLDIR)/cs/sys
TABDIR=$(APPLDIR)/cs/tab
XMLDIR=$(APPLDIR)/cs/xml
BTCDIR=$(APPLDIR)/cs/btc
CFGDIR=$(APPLDIR)/cfglist
CSLIBDIR=$(APPLDIR)/cslib
INCDIRS=-I$(PDTDIR)/include -I$(SYBASEDIR)/include -I$(CICSDIR)/include \
-I../include -I$(APPLDIR)/include -I$(BSCDIR)/include\
-I$(SCDIR)/include -I$(SCDIR)/include \
LIBDIRS=-L$(PDTDIR)/lib -L$(SYBASEDIR)/lib -L$(CICSDIR)/lib \
-L/usr/lib/dce -L../lib -L$(APPLDIR)/lib -L$(BSCDIR)/lib \
-L$(SCDIR)/lib -L$(CSLIBDIR)/lib
LIBS= -s -lcs_r.so -lct_r.so -ltcl_dce.so -lcomn_dce.so \
-lintl_r.so -ldce -lcicsecico -ldcelibc_r -ldcepthreads -lc_r \
-lpthreads -lm -lld -lcicsrt -lcur -lcurses
SOFLAG=-bnoentry -bE:$(DLLEXPDIR)/[email protected] -bM:SRE -lc
CICSREDO=$(PDTDIR)/bin/cicsline
CICSLINE=$(PDTDIR)/bin/cicsline
CC=xlc_r4
CICSTRAN=$(CICSDIR)/bin/cicstran
CPRE=$(SYBASEDIR)/bin/cpre -y -V CS_VERSION_110 $(INCDIR)
CFLAGS=-bI:/usr/lpp/cics/lib/cicsprC.exp -qmaxmem=8192 \
-O -DUNIX -DLIB -D__PATH__='"$(PWD)/"' -DDEBUG
EDF=
help:
@echo Please input filename that will be made
@echo 'syntax: make <help|all|"filename">'
.c:
$(CC) -c $? $(CFLAG) $(INCDIR)
@if [ -f $(DLLLIBDIR)/[email protected] ]; then rm $(DLLLIBDIR)/[email protected]; fi
@ld -o $(DLLLIBDIR)/[email protected] [email protected] $(SOFLAG) $(LIBDIR) $(LIB)
@if [ -f $*.o ]; then rm $*.o; fi
if [ -f $*.cpre ]; then rm $*.c; fi
if [ -f $*.cpre.cp ]; then rm $*.cpre.cp; fi
.cpre.c:
$(CICSREDO) $< < $< > $<.cp
$(CPRE) $<.cp
mv $<.c [email protected]
相關推薦
UNIX下C語言動態連結庫SO
# # makefile for application preconsole program # # .SUFFIXES:.c .SUFFIXES:.cpre SYBA
JNA呼叫C語言動態連結庫學習實踐總結(指標模擬)
最新因為專案需要,學習了一下JNA框架,在這裡記錄一下學習和使用心得,給大家分享,希望能幫助新手。 本文主要講解如何使用JNA框架輕鬆呼叫C語言動態連結庫,如何使用JNA模擬C語言引數(例如陣列、指標等)。 JNA(Java Native Access)框架
Linux下如何檢視動態連結庫so檔案的依賴
最近專案用到了opencv,在測試環境編譯後生成了so檔案,在測試環境執行正常後準備在預發環境進行上線前的測試 但是System.loadLibrary(Core.NATIVE_LIBRARY_NAM
JNA呼叫C語言動態連結庫學習實踐總結
2.JNA模擬普通傳值引數 C語言函式: int function1(int a, float b, long c) JNA模擬: int function1(int a, float b, long c) 3.JNA模擬C語言陣列 C語言函式:
C語言動態連結庫DLL的載入
靜態連結庫在連結時,編譯器會將 .obj 檔案和 .LIB 檔案組織成一個 .exe 檔案,程式執行時,將全部資料載入到記憶體。 如果程式體積較大,功能較為複雜,那麼載入到記憶體中的時間就會比較長,最直接的一個例子就是雙擊開啟一個軟體,要很久才能看到介面。這是靜態連結庫的一個弊端。 動態連結庫有兩種載入方
linux下gcc編譯 .c檔案生成動態連結庫 .so檔案,並測試呼叫該連結庫
簡單介紹:linux中so檔案為共享庫,和windows下dll相似;so可以共多個程序呼叫,不同程序呼叫同一個so檔案,所使用so檔案不同;so原檔案不需要main函式;例項,1.通過mysqlTest.c中的函式mysql(),生成一個libmysql.so連結庫#inc
Linux下c++呼叫自己編寫的matlab函式:通過mcc動態連結庫.so實現
之前在這裡和這裡呼叫了matlab自帶的一些函式,是通過matlab引擎來實現的。那裡呼叫的是matlab自帶的函式,那麼如果想呼叫自己寫的.m函式該怎麼辦呢?其實很簡單,原理類似,方法也不止一種。這篇筆記我先嚐試通過mcc將.m函式編譯成動態連結庫供c++呼叫的方式。在另
Linux下執行時呼叫動態連結庫.so的三種方法(筆記)
在/etc/ld.so.conf.d/下建立xxx.conf,在文字中加入.so所在路徑,如:/usr/xxx等等,然後使用相應ldconfig命令使之生效。 將.so所在路徑新增為LD_LIBRARY_PATH環境變數。 在編譯命令中使用-Wl,-rpath
linux下檢視動態連結庫so檔案的依賴的相關組建
我們很多c程式在windows下是以dll形式展現的,在linux則是以so 形式展現的。 windows一般不會因為編譯dll檔案的編譯器版本不同而出先dll檔案不能執行。 但是linux下,不同版本核心的linux下編譯的c程式,在其他版本的linux下就容易
linux下檢視動態連結庫so檔案的依賴的相關元件
我們很多c程式在windows下是以dll形式展現的,在linux則是以so 形式展現的。 windows一般不會因為編譯dll檔案的編譯器版本不同而出先dll檔案不能執行。 但是linux下,不同版本核心的linux下編譯的c程式,在其他版本的linux下就容易出現無法執行的問題。主要可能是支
linux下生成動態連結庫so檔案
怎樣在linux下生成動態連結庫即.so檔案? 一、 首先需要一個好的編譯工具,直接用gcc命令列編譯已經不再是一個明智之舉了,一個好的帶編譯工具的環境是很重要的,我選擇的是easyeclipse,它集成了CDT,可以很方便地編寫C和C++程式,它自動集成了gcc編譯器
Android studio下的Android JNI呼叫以及動態連結庫.so的生成
什麼是JNI: JNI(Java Native Interface)提供了Java和其他語言互動的一個介面,為什麼說是介面呢,因為如果你用想用C++實現一個簡單的兩個數字加減的方法並把值返回,那麼就需要首先在AndroidJniUtils.java(就是你寫的
Linux下gcc編譯生成動態連結庫*.so檔案並呼叫它
動態庫*.so在linux下用c和c++程式設計時經常會碰到,最近在網站找了幾篇文章介紹動態庫的編譯和連結,總算搞懂了這個之前一直不太瞭解得東東,這裡做個筆記,也為其它正為動態庫連結庫而苦惱的兄弟們提供一點幫助。1、動態庫的編譯下面通過一個例子來介紹如何生成一個動態庫。這裡
C/C++ 靜態連結庫(.a) 與 動態連結庫(.so)
平時我們寫程式都必須 include 很多標頭檔案,因為可以避免重複造輪子,軟體大廈可不是單靠一個人就能完成的。但是你是否知道引用的那些標頭檔案中的函式是怎麼被執行的呢?這就要牽扯到連結庫了! 庫有兩種,一種是 靜態連結庫,一種是 動態連結庫,不管是哪一種庫,要使用它們,都要在程式中包含相應的 includ
Linux-(C/C++)動態連結庫生成以及使用(libxxx.so)
Linux中so檔案為共享庫,與windows下dll類似,不過實現要簡單。 so可以供多個程序使用,不同程序呼叫同一個so檔案,所使用so檔案不同。 so檔案源程式不需要main函式,有也不會被執行。 下面通過一個簡單例子,來學習.so檔案的製作跟使用(前提已經配置好環
【C++】linux下CMake生成動態連結庫,g++包含生成動態連結庫
一、前言 由於專案中要用到java呼叫C++的庫檔案,於是需要在linux下編譯連線生成動態庫,然後根據Recast官方包要先CMake生成編譯,然後在包含到自己實現的檔案,網上查了半天,坑爹沒有全面的,東拼西湊終於才明白原理,於是總結記錄分享如下。 二、CMake生
【Android】動態連結庫so的載入原理
前言 最近開發的元件時常出現了執行時載入so庫失敗問題,每天都會有java.lang.UnsatisfiedLinkError的錯誤爆出來,而且線上總是偶然復現,很疑惑。所以本文將從AOSP原始碼簡單跟蹤Android中的動態連結庫so的載入原理,試圖找出一絲線索。 載入入口
JAVA呼叫動態連結庫so檔案
最近專案在用到openjdk1.8時,出現以下異常,綜其原因是JDK1.8中libjavajpeg.so估計缺少某些函式。 記錄一下,這裡有一篇關於動態連結庫的文章,比較不錯,轉載推薦一下:http://www.cnblogs.com/duanxz/p/3651347.html Exception in t
Untiy 匯入C# DLL動態連結庫
Untiy 匯入C# DLL外掛。 1. 建立類庫檔案,注意選擇.NET最好不要大於3.5版本,因為Unity使用的mono版本為2.0,支援最多到.NET 3.5版本。 2. 如下圖,建立一個MyRandomClass,包含一個公有方法GetRandom(),獲取C#自帶隨機數獲取函
linux 把靜態連結庫.a連結到動態連結庫.so裡
個人分類: linux編譯連結 最近公司的專案中突然出現了這樣一個需求,我簡化再概括後如下:有兩大模組,其中一個模組a最終編譯出一個可執行檔案exec_a,另一個模組b編譯出一個動態連結庫lib_b.so被模組a的程式exec_a所連結。現在模組b中分出