libtool编译

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

 

 

 

o: 编译的目标文件
a: 静态库,其实就是把若干o文件打了个包
so: 动态链接库(共享库)

lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息
la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息

补充:libtool

1 libtool的工作原理 
libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtool是gcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。libtool只与后缀名为lo、la为的libtool文件打交道。

 

 

 

fun.c:

int add(int a, int b)
{
 return a+b;
}

fun.h:

#ifndef _FUN_H_11
#define _FUN_H_11
int add(int a, int b);
#endif
----------------------------

hello.c:

#i nclude <stdio.h>
void output(char *ss)
{
 printf("HELLO  %s/n", ss);
}

hello.h

#ifndef HELLO_H_111
#define HELLO_H_111
void output(char *ss);
#endif
----------------------------

main.c:

#include <stdio.h>
#include "hello.h"
#include "fun.h"
void
main()
{
 output("world");
 printf("Test Value:%d/n", add(1, 2));
}

 

 

OBJS = fun.o hello.o
LO_OBJS = main.lo fun.lo hello.lo
PACKAGE_VERSION = 1:1:1
LIBDIR=/usr/local/lib

all : test

install : libhello.la
 
test : libhello.la main.o
 libtool --mode=link gcc -g -O -o test main.o libhello.la -lm

libhello.la : $(OBJS)
 libtool gcc -g -O -o libhello.la $(LO_OBJS) -rpath ${LIBDIR} -lm -version-info ${PACKAGE_VERSION}

main.o : main.c fun.h hello.h
 libtool --mode=compile gcc -g -O -c main.c

fun.o : fun.c fun.h
 libtool --mode=compile gcc -g -O -c fun.c

hello.o : hello.c hello.h
 libtool --mode=compile gcc -g -O -c hello.c

clean :
 @rm -f OBJ/* lib*.a *~ *core *.lo *.o *.la
 @rm -rf .libs

 

全志在编译时出现的error: Libtool library used but 'LIBTOOL' is undefined解决方案 最近刚得到的offer,开始调试全志的芯片,R16系列;之前在公司用Ubuntu14.04编译好好的,把电脑带回家就无法完成编译,查看log显示如下: Makefile.am:6: error: Libtool library used but 'LIBTOOL' is undefined Makefile.am:6:   The usual way to define 'LIBTOOL' i 阅读详情

相关推荐

libtool编译(rv1126)

下载地址。

qq_39200110的博客 376

libtool 源码编译与使用

例如,使用 libtool --mode=compile 和 libtool --mode=link 来编译和链接库,libtool 会根据目标平台自动选择正确的编译和链接选项。通过这些功能,libtool 大大简化了共享库的管理和使用,使得开发者可以专注于应用程序的开发,而不必担心底层平台的差异。Libtool 生成的包装器脚本可以自动处理符号链接和库路径,确保程序在开发和安装后都能正确找到所需的库。注意一个概念,libtool 库文件,后缀为la,是一个抽象了静态库和动态库的高层概念,库文件。

eloudy的专栏 2662

libtool简介

一. libtool工作原理  libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtoolgcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。libtool只与后缀名为lo、la的l

moonlightfall的博客 1万+

Libtool源码在Linux环境下编译成win32的动态库

1、linux下安装交叉编译器——mingw32 我用的是ubuntu虚拟机,直接使用终端命令安装即可:sudo apt-get install mingw32。 注意:如果此处安装失败,原因可能是Ubuntu系统的软件更新源有问题,换一下软件源即可。具体方法问度娘。 2、编译libtool 下载libtool源码 解压libtool软件包 进入解压后的lbtool目录,阅读readm...

Kernel_Heart的博客 1444

使用Libtool构建动态链接库 [五]

使用Libtool构建动态链接库 [五] 文章目录使用Libtool构建动态链接库 [五]Libtool简介LibtoolLibtool的选项**--tag选项****--mode选项**linux平台下动库的编译编译目标文件生成动态库libtool 的使用libtool --help示例使用libtool编译库文件使用libtool编译可执行文件autoconf、automake 与 libtool 配合使用 Libtool简介 不同Unix平台,共享库的编译、命名、管理方式不相同 库的命名:.s

jia_weihui的博客 2634

交叉编译libtool相关的问题

交叉编译libtool相关的问题 1 libtool工作原理 libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtoolgcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。li

小雷的专栏 3132

LINUX下载及编译libtool

下载链接 http://www.gnu.org/software/libtool/ http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz 解压 tar xf libtool-2.4.6.tar.gz cd libtool-2.4.6 编译 ./configure --prefix=${HOME}/build_libs make ...

柳鲲鹏 6325

源码编译安装libtool工具

1. 获取源码   wgethttp://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz   tar xvflibtool-2.4.6.tar.gz -C ~/   cd ~/libtool-2.4.6 2. 配置   ./configure --prefix=/home/jello/libtool 3. 编译   make -j4 ...

weixin_30824479的博客 2380

8、交叉编译libtool

8、交叉编译libtool 目标平台:LOONGSON-1B开发板 内核:Linux 3.0 编译平台:ubuntu10.04 交叉工具链:gcc-3.4.6-2f 一、简介     GNU libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中。 二、下载libtool源码包     进入http://mirrors.ustc.edu.cn/

Skyline的专栏 4684

ubuntu编译安装libtool

ubuntu编译安装libtool

liji_digital的博客 4643

使用libtool编译静态程序和静态库

【代码】使用libtool编译静态程序和静态库。

victorwongms90的博客 552

避免交叉编译时,libtool 的雷区

Avoiding libtool minefields when cross-compiling If you've ever tried to cross-compile a free software project for a different architecture on GNU/Linux, you may well have run into the situation wh

J2GG_ANDROID的专栏 3334

缺少libtool依赖导致编译安装失败

今天安装一个测试数据库的过程中,编译安装rlwrap工具时出错。 如下。 [root@DB1 rlwrap-0.37]# ./configure checking build system type... Invalid configuration `x86_64-unknown-linux-': machine `x86_64-unknown-linux' not recogniz...

weixin_30415113的博客 3494

Fedora12中默认的kdevelop自带例子编译停在连接XX(libtool)那里

源代码是自带的,如下: #ifdef HAVE_CONFIG_H #include &lt;config.h&gt; #endif #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char *argv[]) { printf("Hello, world!\n"); ...

weixin_34381666的博客 81

libtool : X--tag=CC: command not found 编译报错

libtool : X--tag=CC: command not found 编译报错 博客分类:  C/C++ Linux 编译libtool出错command not found GCC编译代码时,执行./configure在代码目录下生成了libtool脚本,再执行make 出现类似以下错误     Error代码  

lijiebit的博客 923

linux 下编译radius时出现libtool: Command not found 的错误

linux 下编译radius时出现libtool: Command not found    用命令查看libtool存在已经存在了,为什么会报错呢?后面认真分析了下,  原因是系统的ibtool版本不同,解决办法是重新生成makefie,执行如下命令:   make distclean   ./configure  --prefis=/usr/local/radius  

sfhjy的专栏 1897
上一篇: AdvancedDataGrid
下一篇: linux 之apt-get、qt4
rubyzhudragon
博客等级 码龄18年 18粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值