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

怎么生成lib,该lib中包含了含有其他的lib

    来源: 互联网  发布时间:2015-12-21

    本文导语:  我们知道用 ar r libx.a x.o xx.o ..  可以生成静态库 但是如果静态库使用了其他的lib,怎么生成该lib呢? 举个例子 [t.h] int t(); [t.cpp] #include "t.h" int t() {return 1;} [u.h] int u(); [u.cpp] #include "u.h" #include "t.h" int u() {return t()+...


我们知道用 ar r libx.a x.o xx.o ..  可以生成静态库
但是如果静态库使用了其他的lib,怎么生成该lib呢?

举个例子
[t.h]
int t();

[t.cpp]
#include "t.h"
int t() {return 1;}

[u.h]
int u();
[u.cpp]
#include "u.h"
#include "t.h"
int u() {return t()+10;}

有t.cpp生成t.o进而通过ar生成了libt.a
而我希望通过连接libt.a生成libu.a,牛人给个方法!!
小弟在线急等。先谢了!!

|
One library will often depend on another library. For example, many GNU/Linux systems include libtiff, a library that contains functions for reading and writing image files in the TIFF format. This library, in turn, uses the libraries libjpeg (JPEG image routines) and libz (compression routines).

Listing 2.9 shows a very small program that uses libtiff to open a TIFF image file.

Listing 2.9 (tifftest.c) Using libtiff
#include  
#include  
int main (int argc, char** argv) 
{
  TIFF* tiff; 
  tiff = TIFFOpen (argv[1], "r"); 
  TIFFClose (tiff); 
  return 0; 

Save this source file as tifftest.c. To compile this program and link with libtiff, specify -ltiff on your link line:

 
% gcc -o tifftest tifftest.c –ltiff 
By default, this will pick up the shared-library version of libtiff, found at /usr/lib/libtiff.so. Because libtiff uses libjpeg and libz, the shared-library versions of these two are also drawn in (a shared library can point to other shared libraries that it depends on). To verify this, use the ldd command:

 
% ldd tifftest 
        libtiff.so.3 => /usr/lib/libtiff.so.3 (0x4001d000) 
        libc.so.6 => /lib/libc.so.6 (0x40060000) 
        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x40155000) 
        libz.so.1 => /usr/lib/libz.so.1 (0x40174000) 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 
Static libraries, on the other hand, cannot point to other libraries. If decide to link with the static version of libtiff by specifying -static on your command line, you will encounter unresolved symbols:

 
% gcc -static -o tifftest tifftest.c -ltiff 
/usr/bin/../lib/libtiff.a(tif_jpeg.o): In function 'TIFFjpeg_error_exit': 
tif_jpeg.o(.text+0x2a): undefined reference to 'jpeg_abort' 
/usr/bin/../lib/libtiff.a(tif_jpeg.o): In function 'TIFFjpeg_create_compress': 
tif_jpeg.o(.text+0x8d): undefined reference to 'jpeg_std_error' 
tif_jpeg.o(.text+0xcf): undefined reference to 'jpeg_CreateCompress' 
... 
To link this program statically, you must specify the other two libraries yourself:

 
% gcc -static -o tifftest tifftest.c -ltiff -ljpeg -lz 
Occasionally, two libraries will be mutually dependent. In other words, the first archive will reference symbols defined in the second archive, and vice versa. This situation generally arises out of poor design, but it does occasionally arise. In this case, you can provide a single library multiple times on the command line. The linker will research the library each time it occurs. For example, this line will cause libfoo.a to be searched multiple times:

 
% gcc -o app app.o -lfoo -lbar –lfoo 
So, even if libfoo.a references symbols in libbar.a, and vice versa, the program will link successfully.


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 怎么能让automake生成的makefile里面包含有我指定的库
  • 使用log4j生成的.log文件,前缀中是不是必须含有当日日期?
  • linux c下利用srand和rand函数生成随机字符串
  • 用JBuilder能将java程序生成exe可执行文件吗?如何生成?
  • Linux下c基于openssl生成MD5的函数
  • 我想问一下,java生成的.class文件能不能通过某种工具生成.exe文件?
  • 怎么能让automake生成的makefile里面包含有我指定的库 iis7站长之家
  • 高分求jsp中动态生成图片的相关资料、生成svg格式和pdf格式的资料,不够再加分
  • linux下利用(cat,strings,head,sed)命令生成随机字符串
  • 如何使用arm-uclibc-gcc将.c文件编译生成.a,将.c文件编译生成.cgi?
  • php中session_id()函数详细介绍,会话id生成过程及session id长度
  • 如何指定用javac编译生成类的存放路径。(最好不要告诉我再生成之后再把文件流重新到出这种)
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • QT Designer生成的代码不能生成可执行程序
  • ORACLE中DBMS_RANDOM随机数生成包
  • 需要从数据库中动态生成的页面是该在SERVLET输出生成,还是应该在JSP编码实现?
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • java生成字母数字组合的随机数示例 java生成随机数
  • 请问我用程序如何编辑Adobe Acrobat 5.0的pdf文件(生成报表)啊?或者如何才能将已生成的execl报表转换成pdf格式?
  • 请问用POI生成Excel文件时,怎么能生成边框线条等?
  • php生成短网址 仿微博短网址生成代码
  • 在JB自己生成的EJB客户端的测试代码中都会自动生成,象String url = "t3://localhost:7001";这样的,请问:
  • java随机生成字符串(字符随机生成类 生成随机字符组合)


  • 站内导航:


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

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

    浙ICP备11055608号-3