zoukankan      html  css  js  c++  java
  • GNU make manual 翻译( 九十六)

    继续翻译

    4.5.6 Directory Search for Link Libraries                        
    -----------------------------------------                        
                            
    Directory search applies in a special way to libraries used with the linker.  This special feature comes into play when you write a prerequisite whose name is of the form `-lNAME'.  (You can tell something strange is going on here because the prerequisite is normally the name of a file, and the _file name_ of a library generally looks like `libNAME.a', not like `-lNAME'.)                        
                            
       When a prerequisite's name has the form `-lNAME', `make' handles it
    specially by searching for the file `libNAME.so', and, if it is not
    found, for the file `libNAME.a' in the current directory, in directories specified by matching `vpath' search paths and the `VPATH' search path, and then in the directories `/lib', `/usr/lib', and `PREFIX/lib' (normally `/usr/local/lib', but MS-DOS/MS-Windows versions  of `make' behave as if PREFIX is defined to be the root of the DJGPP installation tree).                        
                            
       For example, if there is a `/usr/lib/libcurses.a' library on your system (and no `/usr/lib/libcurses.so' file), then 
         foo : foo.c -lcurses                        
                 cc $^ -o $@ 
    would cause the command `cc foo.c /usr/lib/libcurses.a -o foo' to be executed when `foo' is older than `foo.c' or than                        
    `/usr/lib/libcurses.a'.                        

    4.5.6 对链接库的目录搜索
    -----------------------------------------

    对被链接器所使用的库,目录搜索采用特殊的方式。当你以-lNMAE格式来写前提条件时,这种特殊的功能将其作用。(你可以说有些奇怪的事情正在进行,因为正常的前提条件是一个文件的民自,并且一个库的文件名通常是 libNMAE.a 之类,而不是 像 -lNMAE 的样子)

    当一个前提条件的名字中有 -lNAME 的格式,make 要对其进行特殊处理,搜索 libNAME.so ,如果没有找到,则搜索 libNAME.a。此种搜索是在 当前目录和vpath 搜索路径和 VPATH 搜索路径中进行,再然后是 /lib, /usr/lib ,PREFIX/lib (通常是 /usr/local/lib ,但是 MS-DOS/MS-Windows 版本的make 会把PREFIX 处理成 DJGPP 安装目录的根目录)

    例如,如果有你的系统里有一个 /usr/lib/libcurses.a 库(并且没有 /usr/lib/libcurses.so 文件)则

    foo : foo.c -lcurses
    cc $^ -o $@

    将会导致,如果foo比 foo.c 或者 /usr/lib/libcurses.a 旧,则执行 cc foo.c /usr/lib/libcurses.a -o foo

    后文待续

  • 相关阅读:
    pod 安装
    Mac百度云破解限速-修复选中没有导出下载
    swift -SnapKit一些基本使用
    xcode 显示多个重复模拟器
    xcode选择模拟器显示No Scheme
    Xcode删除指定版本的模拟器
    javaScript基础
    Dao模式多表联查
    SQLServer数据库
    数据库错题分析
  • 原文地址:https://www.cnblogs.com/gaojian/p/2694641.html
Copyright © 2011-2022 走看看