1. 程式人生 > >UNIX下C語言動態連結庫SO

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]

相關推薦

UNIXC語言動態連結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 檔案,程式執行時,將全部資料載入到記憶體。 如果程式體積較大,功能較為複雜,那麼載入到記憶體中的時間就會比較長,最直接的一個例子就是雙擊開啟一個軟體,要很久才能看到介面。這是靜態連結庫的一個弊端。 動態連結庫有兩種載入方

linuxgcc編譯 .c檔案生成動態連結 .so檔案,並測試呼叫該連結

簡單介紹:linux中so檔案為共享庫,和windows下dll相似;so可以共多個程序呼叫,不同程序呼叫同一個so檔案,所使用so檔案不同;so原檔案不需要main函式;例項,1.通過mysqlTest.c中的函式mysql(),生成一個libmysql.so連結庫#inc

Linuxc++呼叫自己編寫的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(就是你寫的

Linuxgcc編譯生成動態連結*.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++】linuxCMake生成動態連結,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中分出