`

在linux中进行编译链接的一些选项

阅读更多

gcc编译:

-L :

-Ldir
Add directory dir to the list of directories to be searched for -l.

-I :

-I dir
Add the directory dir to the list of directories to be searched for header
files. Directories named by -I are searched before the standard system
include directories.
If the directory dir is a standard system include
directory, the option is ignored to ensure that the default search order for
system directories and the special treatment of system headers are not
defeated .

-c :生成cpp文件对应的*.o文件。

-D:

TEST_FLAG = -Dprotected=public -Dprivate=public -U__inner

在test目录的makefile中,和源代码的test目录中,添加此项,可将保护、私有的编译为公有的。

ar打包:

ar -rv libmovie.a $(OBJECTS)

ld链接:

-l:

-larchive
--library=archive
Add archive file archive to the list of files to link . This option may be
used any number of times. ld will search its path-list for occurrences of
"libarchive.a" for every archive specified.

On systems which support shared libraries, ld may also search for libraries
with extensions other than ".a". Specifically, on ELF and SunOS systems, ld
will search a directory for a library with an extension of ".so" before
searching for one with an extension of ".a". By convention, a ".so" exten-
sion indicates a shared library.

可以参考下面的btest中的makefile:

CXXFLAGS=-fPIC -g -finline-functions -Wall -W -Winline -pipe -Wreturn-type -Wtrigr
aphs -Wformat -Wparentheses -Wpointer-arith -Werror -Wno-unused-parameter -D_GNU_S
OURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D__VERSION_ID__=
"\"1.0.0.0\""
14 CFLAGS=$(CXXFLAGS)
15 INCPATH= -I../include -I.. -I$(LOCAL_CVS_ROOT)/com/btest/gtest/output/include -I.
16 DEP_LDFLAGS= -L$(LOCAL_CVS_ROOT)/../btestUse/movie/src -L$(LOCAL_CVS_ROOT)/com/bte
st/gtest/output/lib -L. -L../lib

17 DEP_LDLIBS= -lpthread -lstdc++ -lgtest -lgtest_main -lmovie
18 CXX=g++
19 CC = gcc
20
21 PATTERN=test*.cpp
22 TESTFILES=$(wildcard $(PATTERN))
23 EXE=$(basename $(TESTFILES))
24 all : $(EXE)
25 $(EXE) : % : %.cpp
26 $(CXX) $^ -o $@ $(CXXFLAGS) $(CFLAGS) $(INCPATH) $(DEP_LDFLAGS) $(DEP_LDLIBS)
27 .PHONY: list clean
28 list:
29 @echo $(EXE)
30 clean:
31 rm $(EXE)

分享到:
评论

相关推荐

    嵌入式设计及linux驱动开发指南——基于ARM9处理器.pdf

    6.5.2 通用的一些选项 6.5.3 和模块相关的选项 6.5.4 和块相关的选项 6.5.5 和系统类型相关的选项 6.5.6 和总线相关的选项 6.5.7 和内核特性相关的选项 6.5.8 和系统启动相关的选项 6.5.9 和浮点运算相关的...

    Linux代码,以C++为基础.rar

    程序的执行顺序是:编译->链接->运行,通过g++命令的-c选项接文件名的形式将程序进行编译;接着通过g++ 接编译后的*.o文件进行链接,生成可执行程序;通过./程序名进行运行程序 ldd 可执行程序,可以看到该可执行...

    LINUX安装与配置简明手册

    本书详细介绍如何在个人电脑上安装配置Caldera和Red Hat两种发行版本的Linux操作系统,并能帮助用户解决安装和配置过程中出现的各种问题。本书既能指导你进行基本的安装步骤,也能指导你定制独具特色的Linux 操作...

    嵌入式系统/ARM技术中的linux操作系统交叉编译环境的建立方法

    但在此我建议构建如下的交叉编译环境,适合个人或研发小组使用:单独拿出一台PC机(PII以上即可,就用以前淘汰的旧机器就可以),在该PC上安装桌面的Linux操作系统(如Red Hat Linux 8.0及以上),可以采用默认的...

    RED HAT LINUX 6大全

    12.5 在/etc/passwd文件中使用NISisms 232 12.6 使用网络组 232 12.7 解决问题的一些技巧 233 12.8 小结 233 第13章 网络文件系统 235 13.1 NFS安装 235 13.2 启动和停止NFS守护程序 236 13.3 NFS状态 236 13.4 配置...

    内核模块make -C $(LINUX_PATH) M=$(CURRENT_PATH) modules

    按照以上的原则,我们首先列出一张清单,看看 kernel 中哪些选项是非有不可的,也就是说,这些东西是必须被编译到内核中的。将那些非必需的模块剔除到内核以外。 第一个是root所在的硬盘配置。 哪果您的硬盘是IDE...

    Linux从入门到精通

    E.6.11 在安装时, Linux无法工作在我的Ultra DMA IDE驱动器和主机板上, 怎么办? E.6.12 我的机器有一个PCI Ultra DMA 控制器. 我可以安装Linux吗? E.6.13 我有NT, 并想安装Linux, 但我听说启动多操作系统会出现...

    《Linux从入门到精通》

    E.6.11 在安装时, Linux无法工作在我的Ultra DMA IDE驱动器和主机板上, 怎么办? E.6.12 我的机器有一个PCI Ultra DMA 控制器. 我可以安装Linux吗? E.6.13 我有NT, 并想安装Linux, 但我听说启动多操作系统会出现...

    Linux编程从入门到精通

    7.1.5 在EXT2文件系统中查找文件 81 7.1.6 在EXT2文件系统中改变文件 的大小 82 7.2 虚拟文件系统 83 7.2.1 VFS文件系统的超级块 84 7.2.2 VFS文件系统的inode节点 84 7.2.3 注册文件系统 85 7.2.4 装配文件系统 85...

    linux从入门到精通.chm

    E.6.11 在安装时, Linux无法工作在我的Ultra DMA IDE驱动器和主机板上, 怎么办? E.6.12 我的机器有一个PCI Ultra DMA 控制器. 我可以安装Linux吗? E.6.13 我有NT, 并想安装Linux, 但我听说启动多操作系统会出现...

    LINUX编程白皮书 (全集)

    7.1.5 在EXT2文件系统中查找文件 81 7.1.6 在EXT2文件系统中改变文件 的大小 82 7.2 虚拟文件系统 83 7.2.1 VFS文件系统的超级块 84 7.2.2 VFS文件系统的inode节点 84 7.2.3 注册文件系统 85 7.2.4 装配文件系统 85...

    2005详细介绍Linux从入门到精通

    E.6.11 在安装时, Linux无法工作在我的Ultra DMA IDE驱动器和主机板上, 怎么办? E.6.12 我的机器有一个PCI Ultra DMA 控制器. 我可以安装Linux吗? E.6.13 我有NT, 并想安装Linux, 但我听说启动多操作系统会出现...

    linux安装与配置简明手册

    本书详细介绍如何在个人电脑上安装配置Caldera和Red Hat两种发行版本的Linux操作系统,并能帮助用户解决安装和配置过程中出现的各种问题。本书既能指导你进行基本的安装步骤,也能指导你定制独具特色的Linux 操作...

    linux编程白皮书

    7.1.5 在EXT2文件系统中查找文件 81 7.1.6 在EXT2文件系统中改变文件 的大小 82 7.2 虚拟文件系统 83 7.2.1 VFS文件系统的超级块 84 7.2.2 VFS文件系统的inode节点 84 7.2.3 注册文件系统 85 7.2.4 装配文件系统 85...

    iperf for linux Unix

    当你下载到Iperf源码包后 在类unix系统上 需要先解压缩源码包 使用解压缩命令gzip或tar 解压后会产生新文件夹“Iperf 2 0 2” Iperf2 0 2在以下操作系统中可以很好的被编译:Linux SGI IRIX HP UX Solaris AIX 和...

    Linux程序设计 第4版.haozip01

    6.1 用curses函数库进行编译 175 6.2 curses术语和概念 176 6.3 屏幕 178 6.3.1 输出到屏幕 179 6.3.2 从屏幕读取 180 6.3.3 清除屏幕 180 6.3.4 移动光标 180 6.3.5 字符属性 181 6.4 键盘 183 6.4.1 键盘...

    Linux程序设计 第4版.haozip02

    6.1 用curses函数库进行编译 175 6.2 curses术语和概念 176 6.3 屏幕 178 6.3.1 输出到屏幕 179 6.3.2 从屏幕读取 180 6.3.3 清除屏幕 180 6.3.4 移动光标 180 6.3.5 字符属性 181 6.4 键盘 183 6.4.1 键盘...

    Linux FTP服务搭建

    在vsftpd.conf文件中配置匿名访问: anonymous_enable=YES 启动vsFTPd服务 [root@localhost ~]#/etc/init.d/vsftpd start 停止vsFTPd服务 [root@localhost ~]#/etc/init.d/vsftpd stop 重新启动vsFTPd服务 [root@...

Global site tag (gtag.js) - Google Analytics