当前位置:  技术问答>linux和unix

如何编写动态库的makefile

    来源: 互联网  发布时间:2016-02-27

    本文导语:  我有一个.CPP和.h的文件,现在想把其编译成动态库的形式,各位大侠知道应该如何编写这个makefile文件,我是在嵌入式下开发。盼回复 | CC      =       gcc CXX     =       gcc CFLAGS ...

我有一个.CPP和.h的文件,现在想把其编译成动态库的形式,各位大侠知道应该如何编写这个makefile文件,我是在嵌入式下开发。盼回复

|
CC      =       gcc
CXX     =       gcc
CFLAGS  =
CXXFLAGS=       
LINK    =       gcc     
LFLAGS  =       -shared 
LIBS    =       
####### Files
HEADERS =       s1.h    
SOURCES =       s1.c    
OBJECTS =       s1.o    
TARGET  =       s1.so   
####### Implicit rules

.SUFFIXES: .cpp .cxx .cc .C .c
.cpp.o:
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $
/dev/null 2>&1
mv -f .deps/mym.Tpo .deps/mym.Plo
/usr/local/bin/bash ../libtool --tag=CXX   --mode=link g++  -g -O2   -o libmym.la -rpath /usr/home/mymtom/local/lib mym.lo  
g++ -shared -nostdlib /usr/lib/crti.o /usr/lib/crtbeginS.o  .libs/mym.o  -L/usr/lib -lstdc++ -lm -lc -lgcc_s /usr/lib/crtendS.o /usr/lib/crtn.o  -Wl,-soname -Wl,libmym.so.0 -o .libs/libmym.so.0
(cd .libs && rm -f libmym.so && ln -s libmym.so.0 libmym.so)
(cd .libs && rm -f libmym.so && ln -s libmym.so.0 libmym.so)
ar cru .libs/libmym.a  mym.o
ranlib .libs/libmym.a
creating libmym.la
(cd .libs && rm -f libmym.la && ln -s ../libmym.la libmym.la)
gmake[2]: Leaving directory `/usr/home/mymtom/src/play/automake/hello-1.0/libmym'
gmake[2]: Entering directory `/usr/home/mymtom/src/play/automake/hello-1.0'
gmake[2]: Nothing to be done for `all-am'.
gmake[2]: Leaving directory `/usr/home/mymtom/src/play/automake/hello-1.0'
gmake[1]: Leaving directory `/usr/home/mymtom/src/play/automake/hello-1.0'
$ gmake install
Making install in libmym
gmake[1]: Entering directory `/usr/home/mymtom/src/play/automake/hello-1.0/libmym'
gmake[2]: Entering directory `/usr/home/mymtom/src/play/automake/hello-1.0/libmym'
test -z "/usr/home/mymtom/local/lib" || .././install-sh -c -d "/usr/home/mymtom/local/lib"
 /usr/local/bin/bash ../libtool --mode=install /usr/bin/install -c  'libmym.la' '/usr/home/mymtom/local/lib/libmym.la'
/usr/bin/install -c .libs/libmym.so.0 /usr/home/mymtom/local/lib/libmym.so.0
(cd /usr/home/mymtom/local/lib && { ln -s -f libmym.so.0 libmym.so || { rm -f libmym.so && ln -s libmym.so.0 libmym.so; }; })
(cd /usr/home/mymtom/local/lib && { ln -s -f libmym.so.0 libmym.so || { rm -f libmym.so && ln -s libmym.so.0 libmym.so; }; })
/usr/bin/install -c .libs/libmym.lai /usr/home/mymtom/local/lib/libmym.la
/usr/bin/install -c .libs/libmym.a /usr/home/mymtom/local/lib/libmym.a
chmod 644 /usr/home/mymtom/local/lib/libmym.a
ranlib /usr/home/mymtom/local/lib/libmym.a
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/home/mymtom/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
gmake[2]: Nothing to be done for `install-data-am'.
gmake[2]: Leaving directory `/usr/home/mymtom/src/play/automake/hello-1.0/libmym'
gmake[1]: Leaving directory `/usr/home/mymtom/src/play/automake/hello-1.0/libmym'
gmake[1]: Entering directory `/usr/home/mymtom/src/play/automake/hello-1.0'
gmake[2]: Entering directory `/usr/home/mymtom/src/play/automake/hello-1.0'
gmake[2]: Nothing to be done for `install-exec-am'.
gmake[2]: Nothing to be done for `install-data-am'.
gmake[2]: Leaving directory `/usr/home/mymtom/src/play/automake/hello-1.0'
gmake[1]: Leaving directory `/usr/home/mymtom/src/play/automake/hello-1.0'
$ gmake dist-bzip2
{ test ! -d libmym-1.0 || { find libmym-1.0 -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr libmym-1.0; }; }
test -d libmym-1.0 || mkdir libmym-1.0
list='libmym'; for subdir in $list; do 
          if test "$subdir" = .; then :; else 
            test -d "libmym-1.0/$subdir" 
            || ./install-sh -c -d "libmym-1.0/$subdir" 
            || exit 1; 
            distdir=`CDPATH="${ZSH_VERSION+.}:" && cd libmym-1.0 && pwd`; 
            top_distdir=`CDPATH="${ZSH_VERSION+.}:" && cd libmym-1.0 && pwd`; 
            (cd $subdir && 
              gmake  
                top_distdir="$top_distdir" 
                distdir="$distdir/$subdir" 
                am__remove_distdir=: 
                am__skip_length_check=: 
                distdir) 
              || exit 1; 
          fi; 
        done
gmake[1]: Entering directory `/usr/home/mymtom/src/play/automake/hello-1.0/libmym'
gmake[1]: Leaving directory `/usr/home/mymtom/src/play/automake/hello-1.0/libmym'
find libmym-1.0 -type d ! -perm -777 -exec chmod a+rwx {} ; -o 
          ! -type d ! -perm -444 -links 1 -exec chmod a+r {} ; -o 
          ! -type d ! -perm -400 -exec chmod a+r {} ; -o 
          ! -type d ! -perm -444 -exec /usr/local/bin/bash /usr/home/mymtom/src/play/automake/hello-1.0/install-sh -c -m a+r {} {} ; 
        || chmod -R a+r libmym-1.0
tardir=libmym-1.0 && /usr/local/bin/bash /usr/home/mymtom/src/play/automake/hello-1.0/missing --run tar chof - "$tardir" | bzip2 -9 -c >libmym-1.0.tar.bz2
{ test ! -d libmym-1.0 || { find libmym-1.0 -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr libmym-1.0; }; }


|
目标指定为XXX.so
编译的时候加-shared -fpic

    
 
 

您可能感兴趣的文章:

  • 函数互相调用时Makefile编写
  • 我编写的Makefile文件怎么老是有错误那??
  • 自己编写一个程序编译进内核,要修改makefile文件吗?
  • 请教Makefile文件编写
  • 想学编写内核和编makefile文件要看什么书
  • makefile文件的编写问题
  • 急求关于怎么编写makefile的资料???
  • 关于动态库的Makefile的编写
  • 如何编写Makefile,使得只编译改变的文件
  • cmake怎么编写才使Makefile是高试模式
  • 请教makefile文件编写问题
  • 编写一个makefile
  • 求教solaris下Makefile的编写
  • Makefile编写
  • 在编写MAKEFILE的时候,如何判断一个文件是否存在呢???
  • 求教有关makefile编写的问题 MYSRCS:%c=%o
  • makefile文件的编写
  • makefile编写问题
  • 关于用vj编写sniffer一问。 iis7站长之家
  • Makefile编写疑问,需要这么麻烦吗?
  • 用Qt3.1.4编写的程序,如何加入自己编写的另外一个动态库呀?诚恳指教!!
  • 用Qt3.1.4编写的程序,如何加入动态库呀?诚恳指教!!
  • vc编写dll动态连接库(编译过的)能在unix上开发使用吗?
  • 请问:在UINX如何编写、使用动态连接库???
  • Unix里编写动态库时会不会像Windows一样在源代码中含有Dllmain()类似的主函数?
  • 如何编写自己的动态链结库与static lib,如何调用他们,希望详细一点
  • [请教]怎样获得共享库(动态连接库)中函数的原型以便编写专用库来覆盖它?
  • 求助:在Qt编写的程序下如何调用动态连接库中的函数!
  • Linux中有没有类似Windows中的动态链接库的东东?怎么编写的?
  • 怎样编写和编译动态库
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编写 linux shell 有什么好的编写工具呢?
  • VB编写的DLL不能被JAVA调用,用C将VB编写的DLL包装起来,做成一个新的DLL;用C编写的DLL可以被JAVA调用,用JAVA再进行一层的包装,因为JAV
  • 如图 scsi <---> scsi controller <---> pci <---> cpu 如果我想对scsi编写驱动我该对哪个部分编写?
  • 用什么工具编写JSP,可以象用InterDev编写ASP一样方便快捷?
  • 编写程序如编写人生,有人和我的意见相同吗?
  • 请问用jsp编写程序,非要编写代码么?有没有什么象fontpage2000那样的工具,能够生成一些固定模板的工具?就是说不用全部都写的工具。望
  • 用jsp编写web程序到底和java serverlet编写web程序有和区别
  • socket中,从client端(用java编写的)传到server端(用c编写的)的字符串为何总多一个ASCII码为10的字符呀?
  • 如何用java编写一个NT平台下的标准服务?
  • 关于用vj编写sniffer一问。
  • Linux下如何编写脚本文件
  • java能不能编写单独运行的程序?
  • Linux有没有类似bat文件,如何编写。
  • 用JAVA编写COM组件
  • 关于版本和bug管理的rule(规则)的编写
  • 在windows下可以用Code::Blocks编写linux程序吗?
  • linux下用java编写邮箱客户端程序与在windows下有什么不同??
  • AIX下如何编写批处理命令和计划任务
  • 怎么用JBuild编写java console程序
  • 如何在LINUX下用一个普通文件调用一个自己编写的调用系统的文件


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3