系统头文件和库查找
包含头文件时尖括号和双引号的区别
![包含头文件时尖括号和双引号的区别](https://img.taocdn.com/s3/m/7d50464469eae009581bec65.png)
include包含头文件的语句中,双引号和尖括号的区别是什么?#incluce ""格式:引用非标准库的头文件,编译器从用户的工作目录开始搜索。
双引号表示先在程序源文件所在目录查找,如果未找到则去系统默认目录查找,通常用于包含程序作者编写的头文件;尖括号表示只在系统默认目录或者括号内的路径查找,通常用于包含系统中自带的头文件。
尖括号:在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找;双引号:首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。
详解:预处理器发现 #include 指令后,就会寻找后跟的文件名并把这个文件的内容包含到当前文件中。
被包含文件中的文本将替换源代码文件中的#include指令,就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。
#include 指令有两种使用形式#include <stdio.h> 文件名放在尖括号中#include “mystuff.h”文件名放在双引号中尖括号< 和> 括起来表明这个文件是一个工程或标准头文件。
查找过程会检查预定义的目录,我们可以通过设置搜索路径环境变量或命令行选项来修改这些目录。
如果文件名用一对引号括起来则表明该文件是用户提供的头文件,查找该文件时将从当前文件目录(或文件名指定的其他目录)中寻找文件,然后再在标准位置寻找文件。
为什么要包含文件呢?因为这些文件包含了编译器所需的信息。
例如,stdio.h文件通常包含EOF,NULL,getchar()和putchar()的定义。
包含大型头文件并不一定显著增加程序的大小。
很多情况下,头文件中的内容是编译器产生最终代码所需的信息,而不是加到最终代码里的具体语句。
被包含的文件还可以含有#include 指示符,由于嵌套包含文件的原因,一个头文件可能会被多次包含在一个源文件中,条件指示符可防止这种头文件的重复处理。
库文件,头文件,库函数,系统调用函数
![库文件,头文件,库函数,系统调用函数](https://img.taocdn.com/s3/m/37df51708e9951e79b8927b7.png)
头文件和库文件的区别:头文件中有函数的申明,库文件实现函数的定义。
比如,printf函数。
使用时应包括stdio.h,打开stdio.h你只能看到,printf这个函数的申明,却看不到printf具体是怎么实现的,而函数的实现在相应的C库中。
而库文件一般是以二进制形式而不是C源文件形式提供给用户使用的。
程序中包括了stdio.h这个头文件。
链接器就能根据头件中的信息找到printf这个函数的实现并链接进这个程序代码段里。
总结起来就是,库文件通过头文件向外导出接口。
用户通过头文件找到库文件中函数实现的代码从而把这段代码链接到用户程序中去。
库文件:是C已经封装好的一些基本算法功能。
你只需引入相应库文件的头文件,调用库文件的函数接口就可以实现相应的功能。
头文件:你调用库文件里的函数就的调入相应的头文件.而且头文件你也可以自己定义。
简单说,头文件可以是库文件,也可以自己定义库函数和系统调用函数的区别:所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。
这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。
系统调用是用户程序和内核交互的接口。
人们在长期编程中发现使用系统调用有个重大的缺点,那就程序的移植性,比如说:linux系统提供的系统调用的函数和windows就不一样,2者不单单是实现的方式不同,提供给用户的函数名,参数都不同,这个可以理解。
因此一个实现好的程序,利用了linux的系统调用譬如说wait4函数,那么他在windows上编译是通不过的。
于是人们想了个办法,就是封装了windows和linux系统调用,给大家一个统一的函数(我习惯叫它接口),那么这样程序的移植性问题就解决了。
所以可以这么认为库函数是对系统调用的封装(不是所有的库函数都是),为的是解决一些公共的问题和提供统一的系统调用的接口,他和系统调用的优缺点就是:系统调用速度是明显要快于库函数(并不一定全部是,但绝大部分是),但系统调用缺乏移植性。
filesystem库用法
![filesystem库用法](https://img.taocdn.com/s3/m/c7d3cdc28662caaedd3383c4bb4cf7ec4afeb6f1.png)
filesystem库用法文件系统库(filesystem library)是C++17新增的标准库之一,用于简化和统一文件和目录的操作。
使用filesystem库的一般步骤如下:1. 包含头文件:`#include <filesystem>`2. 命名空间:`using namespace std::filesystem;`3. 使用库中的功能,例如:- 创建目录:`create_directory(path);`- 删除目录或文件:`remove(path);`- 拷贝或移动目录或文件:`copy(path1, path2);` 或`rename(path1, path2);`- 获取文件大小:`file_size(path);`- 判断路径是否存在:`exists(path);`- 判断是否为目录:`is_directory(path);`- 遍历目录中的文件和子目录:使用迭代器或递归函数等。
以下是一个简单的示例代码,演示了filesystem库的基本用法:```cpp#include <iostream>#include <filesystem>using namespace std::filesystem;int main() {path filePath = "path/to/file.txt";if (exists(filePath)) {if (is_directory(filePath)) {std::cout << "Path is a directory." << std::endl;} else {std::cout << "Path is a file." << std::endl;std::cout << "Size: " << file_size(filePath) << " bytes." << std::endl;}} else {std::cout << "Path does not exist." << std::endl;}return 0;}```上述代码会判断给定的路径是否存在,并输出路径类型(文件还是目录)和文件大小(如果是文件的话)。
linux header file
![linux header file](https://img.taocdn.com/s3/m/31a4d43e453610661ed9f492.png)
1 Linux内核所在目录为/usr/src/kernels/...2 Linux头文件所在目录为/usr/include/...3 找不见头文件可以用find命令查找find / -name *.hlinux常用头文件如下:POSIX标准定义的头文件<dirent.h> 目录项<fcntl.h> 文件控制read,write,fcntl,close,link,stat,umask,unlink,fopen O_RDONLY O_WRONLY O_NONBLOCK等。
<fnmatch.h> 文件名匹配类型<glob.h> 路径名模式匹配类型<grp.h> 组文件<netdb.h> 网络数据库操作<pwd.h> 口令文件<regex.h> 正则表达式<tar.h> TAR归档值<termios.h> 终端I/O<unistd.h> 符号常量unix standard header ->unistd.h,STDIN_FILENO,STDOUT_FILENO <utime.h> 文件时间<wordexp.h> 字符扩展类型-------------------------<arpa/inet.h> INTERNET定义<net/if.h> 套接字本地接口<netinet/in.h> INTERNET地址族<netinet/tcp.h> 传输控制协议定义-------------------------<sys/mman.h> 内存管理声明<sys/select.h> Select函数<sys/socket.h> 套接字借口<sys/stat.h> 文件状态<sys/times.h> 进程时间<sys/types.h> 基本系统数据类型例如:size_t(signed int) off_t(long)<sys/un.h> UNIX域套接字定义<sys/utsname.h> 系统名<sys/wait.h> 进程控制------------------------------POSIX定义的XSI扩展头文件<cpio.h> cpio归档值<dlfcn.h> 动态链接<fmtmsg.h> 消息显示结构<ftw.h> 文件树漫游<iconv.h> 代码集转换使用程序<langinfo.h> 语言信息常量<libgen.h> 模式匹配函数定义<monetary.h> 货币类型<ndbm.h> 数据库操作<nl_types.h> 消息类别<poll.h> 轮询函数<search.h> 搜索表<strings.h> 字符串操作<syslog.h> 系统出错日志记录<ucontext.h> 用户上下文<ulimit.h> 用户限制<utmpx.h> 用户帐户数据库-----------------------------<sys/ipc.h> IPC(命名管道)<sys/msg.h> 消息队列<sys/resource.h>资源操作<sys/sem.h> 信号量<sys/shm.h> 共享存储<sys/statvfs.h> 文件系统信息<sys/time.h> 时间类型<sys/timeb.h> 附加的日期和时间定义<sys/uio.h> 矢量I/O操作------------------------------POSIX定义的可选头文件<aio.h> 异步I/O<mqueue.h> 消息队列<pthread.h> 线程<sched.h> 执行调度<semaphore.h> 信号量<spawn.h> 实时spawn接口<stropts.h> XSI STREAMS接口<trace.h> 事件跟踪3、C/C++头文件一览C#include<assert.h> //设定插入点#include<ctype.h> //字符处理#include<errno.h> //定义错误码#include<float.h> //浮点数处理#include<iso646.h> //对应各种运算符的宏#include<limits.h> //定义各种数据类型最值的常量#include<locale.h> //定义本地化C函数#include<math.h> //定义数学函数#include<setjmp.h> //异常处理支持#include<signal.h> //信号机制支持#include<stdarg.h> //不定参数列表支持#include<stddef.h> //常用常量#include<stdio.h> //定义输入/输出函数#include<stdlib.h> //定义杂项函数及内存分配函数如malloc、free、system、atoi、atol、rand、exit等#include<string.h> //字符串处理,strlen(),strcat(),strcpy(),strcmp()等等#include<time.h> //定义关于时间的函数#include<wchar.h> //宽字符处理及输入/输出#include<wctype.h> //宽字符分类传统C++#include<fstream.h> //改用<fstream>#include<iomanip.h> //改用<iomainip>#include<iostream.h> //改用<iostream>#include<strstrea.h> //该类不再支持,改用<sstream>中的stringstream ————————————————————————————————标准C++#include<algorithm> //STL 通用算法#include<bitset> //STL 位集容器#include<cctype> //字符处理#include<cerrno> //定义错误码#include<cfloat> //浮点数处理#include<ciso646> //对应各种运算符的宏#include<climits> //定义各种数据类型最值的常量#include<clocale> //定义本地化函数#include<cmath> //定义数学函数#include<complex> //复数类#include<csignal> //信号机制支持#include<csetjmp> //异常处理支持#include<cstdarg> //不定参数列表支持#include<cstddef> //常用常量#include<cstdio> //定义输入/输出函数#include<cstdlib> //定义杂项函数及内存分配函数#include<cstring> //字符串处理#include<ctime> //定义关于时间的函数#include<cwchar> //宽字符处理及输入/输出#include<cwctype> //宽字符分类#include<deque> //STL 双端队列容器#include<exception> //异常处理类#include<fstream> //文件输入/输出#include<al> //STL 定义运算函数(代替运算符)#include<limits> //定义各种数据类型最值常量#include<list> //STL 线性列表容器#include<locale> //本地化特定信息#include<map> //STL 映射容器#include<memory> //STL通过分配器进行的内存分配#include<new> //动态内存分配#include<numeric> //STL常用的数字操作#include<iomanip> //参数化输入/输出#include<ios> //基本输入/输出支持#include<iosfwd> //输入/输出系统使用的前置声明#include<iostream> //数据流输入/输出#include<istream> //基本输入流#include<iterator> //STL迭代器#include<ostream> //基本输出流#include<queue> //STL 队列容器#include<set> //STL 集合容器#include<sstream> //基于字符串的流#include<stack> //STL 堆栈容器#include<stdexcept> //标准异常类#include<streambuf> //底层输入/输出支持#include<string> //字符串类#include<typeinfo> //运行期间类型信息#include<utility> //STL 通用模板类#include<valarray> //对包含值的数组的操作#include<vector> //STL 动态数组容器————————————————————————————————C99增加的部分#include<complex.h> //复数处理#include<fenv.h> //浮点环境#include<inttypes.h> //整数格式转换#include<stdbool.h> //布尔环境#include<stdint.h> //整型环境#include<tgmath.h> //通用类型数学宏本文来自CSDN博客,转载请标明出处:/wubin1124/archive/2009/12/09/4971359.aspx******************************************************************************* ****************************************************程序在使用一个函数之前,应该首先声明该函数。
系统头文件(OS.H)
![系统头文件(OS.H)](https://img.taocdn.com/s3/m/981660c758f5f61fb73666f8.png)
#include"c8051f.h"#include"OS_INIT_SP.H" //系统初始化头文件#include"Init_Task.h"#define uint unsigned int#define uchar unsigned char#define ulong unsigned long#define uint unsigned int#define uchar unsigned char#define ulong unsigned long#define SYSCLK 11059200 //晶振频率#define SYTIMEISR 50 //系统时钟中断时间(ms)#define NULL (void *)0L#define OK 1/*任务状态*/#define WAIT_MSG 0X00#define WAIT_TIME 0X01#define READY 0X02#define TEST 1 //测试代码条件编译/*任务表*/typedef struct task_b{uchar xdata *sp_start; //任务堆栈底指针uchar sp_size; //任务堆栈长度uchar flg; //任务状态//uchar prio; //任务指针//struct task_msg *msg ; //任务接收消息结构体指针uchar timedal; //任务挂起延迟时间}task_link;extern task_link xdata OSPCB[N+1]; //TASK zhuang tai link/*操作系统全局变量*/extern uchar data Prio; //当前运行的任务优先级extern uchar data *spend; //系统堆栈底指针extern uchar data ISR_num; //中断嵌套次数extern uchar data OSRdyGrp; //任务就绪表全局变量extern uchar data OSRdyTab[TASK_8N];//任务优先级表1extern uchar code OSMapTab[8]; //任务优先级表2extern uchar code OSUnMapTab[256]; //任务优先级表3/*操作系统全局函数*/extern void Task_Init(uchar i,void(*addr)(void),uchar xdata *Task_sta);//系统初始化函数extern void OS_RdyTask(uchar prio); //使一个任务就绪extern void OSTask_TimeDal(uchar TimeDal); //使一个任务时间延迟extern void OSISR_Task_Sched(void); //切换任务函数extern void OSInit_task(); //任务堆栈初始化。
FLUX富勒系统操作手册
![FLUX富勒系统操作手册](https://img.taocdn.com/s3/m/5a441295284ac850ad0242b2.png)
一、系统概述1、系统登陆1.1 登陆WMS客户端点击“连接”,输入正确的服务器地址——点击“确定”在登录窗口输入用户名——密码——仓库——点击“登录”1.2修改密码登录WMS系统——点击“系统”——点击“修改密码”输入原始密码——再输入欲修正的新密码并在确认密码处再次输入新密码——点击“保存”1.3切换仓库如欲退出系统或者切换其它操作仓库——点击“系统”——切换仓库、退出登录或退出系统2、客户档案2.1 客户档案内容登录WMS系统——基础设置——双击“客户档案”点击:明细——点击:新增,输入客户代码或名称(支持中英文名称,有字段长度限制),选择客户类型,填写对应的客户名称的中英文描述,地址及控制信息页签的内容可以选填控制信息中:重量单位、体积单位维护在此客户下产品体积、重量的默认单位3、产品档案3.1 产品档案内容登录WMS系统——基础设置——双击“产品档案”点击:新增——选择该产品对应货主,输入产品代码或名称(支持中英文名称,有字段长度限制),填写对应的产品名称的中英文描述。
地址及其他项目可以选填。
产品各页签的信息根据仓库运作流程配置对应信息需要维护的信息➢主信息页签各字段说明:●客户代码-产品所属的客户代码●产品代码-产品代码,不可重复,建议使用数字和字母。
●激活-选中激活,则表示控制产品继续存在;否则,将无法对产品继续进行收货、发货等业务操作。
(注:只有该客户类型为货主时,才能新增一个产品。
)●中文描述-产品的中文名称●英文描述-产品的英文名称●毛重-产品主单位的标准毛重●净重-产品主单位的标准净重●体积-产品主单位的标准体积,可根据长宽高数据自动计算➢配置信息页面:●包装代码-产品使用的包装。
默认为货主的缺省包装●批次属性-产品的批次属性规则,提取客户档案中的设置作为默认值●库位指定规则-系统计算上架库位的方式。
提供人工指定库位、收货时计算库位和上架时计算库位3种选择,选择:收货时计算库位●上架规则-产品的上架规则,具体参考业务规则设置●库存周转规则-产品的库存周转规则,提取客户档案中的设置作为默认值。
windows库的使用方法
![windows库的使用方法](https://img.taocdn.com/s3/m/cbc9d0380640be1e650e52ea551810a6f424c852.png)
windows库的使用方法
Windows库提供了很多用于操作Windows系统的函数和数据
结构。
以下是使用Windows库的一般步骤:
1. 包含头文件:为了使用Windows库中的函数和数据结构,
你需要包含相应的头文件。
例如,如果你想使用Windows API 的函数,你需要包含`windows.h`头文件。
2. 链接库:如果你使用的是DLL(动态链接库)版本的Windows库,你需要在你的项目中链接该库。
你可以在项目
设置中设置链接器选项来指定待链接的库。
3. 调用函数:使用Windows库的函数前,你需要了解函数的
参数和返回值。
可以查阅相关的文档或者API参考来获取这
些信息。
通常,你可以直接调用这些函数,传递所需的参数,并根据返回值进行相应的操作。
4. 处理错误:在使用Windows库时,可能会出现错误。
你需
要适当地处理这些错误,以防止程序崩溃或产生不正确的行为。
Windows库中的大多数函数会返回一个错误码,你可以通过
调用`GetLastError()`来获取该错误码,并使用
`FormatMessage()`函数将错误码转换为可读的错误消息。
总的来说,使用Windows库的方法是先包含头文件,然后链
接库,在代码中调用所需的函数,并处理可能的错误。
具体的使用方法可以参考相关的文档或者API参考。
gcc编译链接时指定头文件和库文件搜索路径
![gcc编译链接时指定头文件和库文件搜索路径](https://img.taocdn.com/s3/m/7eb56063ddccda38376baf9c.png)
gcc编译链接时指定头文件和库文件搜索路径2010-05-24 18:16问题:sudo gcc rongji_ssl.c -lssl提示找不到openssl/ssl.h等头文件的错误原因:gcc在系统默认指定的头文件搜索目录下没找到,默认的头文件搜索目录为:/usr/include/usr/local/include以及/usr/lib/gcc下的一些include目录注意以上搜索目录也包含子目录!解决:方法1:sudo cp -rf /usr/local/ssl/include/openssl /usr/include/方法2:在编译后面加-I/usr/local/ssl/include================================================解决了上面问题后,sudo gcc rongji_ssl.c -lssl又出现了一个新问题:/usr/bin/ld: cannot find -lssl原因:gcc在默认的库搜索路径下找不到ssl库文件。
默认的库(包括动、静态库)搜索路径为:/lib、/usr/lib、/usr/local/lib、另外动态库搜索路径还可以由:LD_LIBRARY_PATH环境变量(profile中定义)、/etc/ld.so.conf中指定。
与添加头文件搜索路径类似,在编译时添加-L参数可指定搜索动、静态库的路径。
默认情况下,gcc在链接时优先使用动态库,只有当动态库不存在时才考虑使用静态库,如果需要的话可以在编译时加上-static选项,强制使用静态库。
如:gcc foo.c -L /home/xiaowp/lib -static -lfoo解决:通过查找,当前的ssl库为:/usr/lib/libssl.so.0.9.8/usr/local/ssl/lib/libssl.a因此上面的解决方法有:方法1:在编译后面加-L/usr/local/ssl/lib,使gcc找到并使用静态库。
GCC编译时头文件路径问题
![GCC编译时头文件路径问题](https://img.taocdn.com/s3/m/7f8466d028ea81c758f57803.png)
GCC_EXEC_PREFIX 的默认设置为 prefix /lib/gcc-lib/ ,这里的 prefix 是安装编译程序时 configure 脚本指定的名字。该前缀也用于定位标准连接程序文件,包含进来作为可执行程序的一部分。 如果使用 -B 命令行TH 。
方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径。
可以通过编辑配置文件/etc/ld.so.conf来指定动态库的搜索路径,该文件中每行为一个动态库搜索路径。每次编辑完该文件后,都必须运行命令ldconfig使修改后的配置生效。我们通过例1来说明该方法。
例1:
我们通过以下命令用源程序pos_conf.c(见程序1)来创建动态库 libpos.so,详细创建过程请参考文[1]。
网友回复:你引用的是内核下的头文件.
不在/usr/include下.
在: /usr/src/kernels/2.6.18-8.el5-x86_64/include/linux/module.h 下面... 中间的版本号是不一样的...你选你的就行了..
网友回复:请问楼上为什么是在/usr/src/kernels/2.6.18-8.el5-x86_64/include/linux/module.h呢?我查了一下环境变量,没有看到关于头文件的环境变量。gcc是如何知道头文件的位置的?
} 程序1: pos_conf.c
gcc编译报错解决方案
![gcc编译报错解决方案](https://img.taocdn.com/s3/m/3242001a4431b90d6c85c761.png)
Gcc最基本的用法是∶gcc [options] [filenames] 其中options就是编译器所需要的参数,filenames给出相关的文件名称。
-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。
如果不给出这个选项,gcc就给出预设的可执行文件a.out。
1.linker input file unused because linking not done我在Windows下使用SQLite编了个C++程序,在编写Makefile并使用cygwin 中的g++进行编译链接时遇到如下的错误:linker input file unused because linking not done我的语句是g++ -c a.cpp -lsqlite3到网上查了一下,问题出在链接数据库的语句不应出现在编译语句里面。
上面的语句里面有-c 即编译compile,所以命令会忽略掉所有的-l 链接库的命令。
而要链接数据库,应该在生成可执行文件时才使用。
正确的使用链接的语句应该是g++ a.o -L. -lsqlite3 -o exename2.Linux系统的头文件和库文件搜索路径**#include**的头文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。
∙当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()∙写在specs内的(针对rpm包)∙后来用-D -I -L指定的∙gcc环境变量设定(编译的时候)∙ld.so的环境变量(这是run time的时候)头文件gcc 在编译时如何去寻找所需要的头文件:∙header file的搜寻会从-I开始∙然后找gcc的环境变量C_INCLUDE_PA TH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PA TH∙再找内定目录:o/usr/includeo/usr/local/includeo/usr/lib/gcc-lib/i386-linux/2.95.2/includeo/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3o/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include∙库文件但是如果装gcc的时候,是有给定的prefix的话,那么就是o/usr/includeo prefix/includeo prefix/xxx-xxx-xxx-gnulibc/includeo prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include库文件cos()等函式库的选项要多加-lm∙编译的时候:gcc会去找-L∙再找gcc的环境变量LIBRARY_PATH∙再找内定目录/lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的运行时动态库的搜索路径1 在配置文件/etc/ld.so.conf中指定动态库搜索路径2 通过环境变量LD_LIBRARY_PA TH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)3 在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。
FLUX富勒系统操作手册
![FLUX富勒系统操作手册](https://img.taocdn.com/s3/m/9147968402020740be1e9bee.png)
一、系统概述1、系统登陆1.1 登陆WMS客户端点击“连接”,输入正确的服务器地址——点击“确定”在登录窗口输入用户名——密码——仓库——点击“登录”1.2修改密码登录WMS系统——点击“系统”——点击“修改密码”输入原始密码——再输入欲修正的新密码并在确认密码处再次输入新密码——点击“保存”1.3切换仓库如欲退出系统或者切换其它操作仓库——点击“系统”——切换仓库、退出登录或退出系统2、客户档案2.1 客户档案内容登录WMS系统——基础设置——双击“客户档案”点击:明细——点击:新增,输入客户代码或名称(支持中英文名称,有字段长度限制),选择客户类型,填写对应的客户名称的中英文描述,地址及控制信息页签的内容可以选填控制信息中:重量单位、体积单位维护在此客户下产品体积、重量的默认单位3、产品档案3.1 产品档案内容登录WMS系统——基础设置——双击“产品档案”点击:新增——选择该产品对应货主,输入产品代码或名称(支持中英文名称,有字段长度限制),填写对应的产品名称的中英文描述。
地址及其他项目可以选填。
产品各页签的信息根据仓库运作流程配置对应信息需要维护的信息➢主信息页签各字段说明:●客户代码-产品所属的客户代码●产品代码-产品代码,不可重复,建议使用数字和字母。
●激活-选中激活,则表示控制产品继续存在;否则,将无法对产品继续进行收货、发货等业务操作。
(注:只有该客户类型为货主时,才能新增一个产品。
)●中文描述-产品的中文名称●英文描述-产品的英文名称●毛重-产品主单位的标准毛重●净重-产品主单位的标准净重●体积-产品主单位的标准体积,可根据长宽高数据自动计算➢配置信息页面:●包装代码-产品使用的包装。
默认为货主的缺省包装●批次属性-产品的批次属性规则,提取客户档案中的设置作为默认值●库位指定规则-系统计算上架库位的方式。
提供人工指定库位、收货时计算库位和上架时计算库位3种选择,选择:收货时计算库位●上架规则-产品的上架规则,具体参考业务规则设置●库存周转规则-产品的库存周转规则,提取客户档案中的设置作为默认值。
环境变量,include搜索路径,lib库搜索路径
![环境变量,include搜索路径,lib库搜索路径](https://img.taocdn.com/s3/m/71faad21b5daa58da0116c175f0e7cd1842518b9.png)
环境变量,include搜索路径,lib库搜索路径环境变量系统环境变量我们知道,我们经常要设置⼀些环境变量,系统环境变量我们⾮常容易理解。
其实我们在windows中经常容易接触。
其实环境变量是⼀个⾮常⼴泛的⼀个概念,它与web应⽤程序中的web.config所处的⾓⾊很像。
什么意思呢?就是说,程序(系统或应⽤)要运⾏的时候,它的基本业务逻辑可能是⼀定的,但是实现业务逻辑的时候有些设置性的东西却可以改变程序很多。
如web应⽤程序,编译之后他的业务逻辑基本不会发⽣改变,但是如果你更改⼀些web.config中的参数,程序的运⾏就会发⽣相应的改变。
这些设置。
就像电视机上⾯调制⼀样。
改变了设置会得到某些不同。
那么环境变量可以理解成设置的⼀种,为什么有不直接称为设置呢?因为它处于⼀种被动的境地。
越多说越糊涂。
最常见的环境变量莫过于PATH,和ClassPATH,这个在设置jdk的时候就需要设置,这⾥的PATH变量指的是,当系统的接⼝接收到⼀个程序启动命令的时候,除了默认在当前⽬录下寻找那个可执⾏⽂件意外,还需要到那些地⽅寻找。
有了这个设置,你就不需要⼀定要进⼊那个⽬录才能执⾏那个程序了。
ClassPATH变量也差不多,它设置的是那些类似于动态库的路径,也就是说,程序在执⾏的时候,发现要引⼊动态库,那样就要在这个变量指定的地⽅去找。
在linux中,系统也有⼀个PATH变量。
其实系统有⼀个⽂件是专门记录那些环境变量的。
1)etcprofile,系统登录会执⾏这个⽂件在当前环境中引⼊那些变量。
2)还有 homeali.bashrc 这个⽂件,简单的来说,etcprofile是对全局有效的,⽽.bashrc是对当前⽤户有效.3)还有⼀种设置⽅法,就是通过终端命令直接修改,我们知道前⾯两个⽂件其作⽤的⽅式就是当程序进⼊状态的时候,他们会被执⾏引⼊到当前空间,那么在当前状态下就会有这些变量,程序也就是可以使⽤它们。
那么如果我们直接在内存中修改该他们,就可以起到暂时的作⽤。
C语言标准库在电脑哪里
![C语言标准库在电脑哪里](https://img.taocdn.com/s3/m/404d7bf6f021dd36a32d7375a417866fb84ac0e2.png)
C语言标准库在电脑哪里C语言标准库是C语言程序设计中非常重要的一部分,它包含了大量的函数和宏定义,可以为程序员提供丰富的功能和便利。
那么,C语言标准库究竟存放在电脑的哪个位置呢?接下来,我们将详细介绍C语言标准库在电脑中的存放位置及相关内容。
C语言标准库通常被存放在操作系统的系统目录下,具体位置可能因操作系统的不同而有所差异。
在Windows操作系统中,C语言标准库通常存放在C:\Program Files\Microsoft Visual Studio\VC\include目录下,其中包含了一系列的头文件,如stdio.h、stdlib.h、string.h等。
这些头文件中包含了众多的函数原型和宏定义,可以为程序员提供丰富的功能和便利。
在Linux操作系统中,C语言标准库通常存放在/usr/include目录下,同样包含了大量的头文件,供程序员使用。
除此之外,C语言标准库还包含了一些静态库和动态库文件,这些文件通常存放在系统的库目录下,如Windows系统中的C:\Windows\System32目录或者Linux系统中的/usr/lib目录。
这些库文件包含了C语言标准库中函数的具体实现,程序在运行时会调用这些库文件来完成相应的功能。
除了系统目录下的存放位置,C语言标准库还可以通过环境变量来指定其存放位置。
在Windows系统中,可以通过设置系统的PATH环境变量来指定C语言标准库的存放位置,这样在编译和链接程序时,系统就可以自动找到相应的头文件和库文件。
在Linux系统中,同样可以通过设置LD_LIBRARY_PATH环境变量来指定库文件的搜索路径。
总的来说,C语言标准库在电脑中的存放位置主要集中在系统目录下,包括头文件和库文件。
程序员在编写C语言程序时,可以通过#include指令来引用相应的头文件,通过编译和链接器来链接相应的库文件,从而使用C语言标准库中提供的丰富功能。
除了系统提供的标准库之外,程序员还可以自行编写和引用自定义的库文件,这些库文件同样可以通过环境变量来指定其存放位置。
C语言常用的库文件(头文件、函数库)
![C语言常用的库文件(头文件、函数库)](https://img.taocdn.com/s3/m/890e433ab80d6c85ec3a87c24028915f804d847b.png)
C语⾔常⽤的库⽂件(头⽂件、函数库)C语⾔常⽤的库⽂件(头⽂件、函数库) C系统提供了丰富的系统⽂件,称为库⽂件。
C的库⽂件分为两类,⼀类是扩展名为".h"的⽂件,称为头⽂件,在前⾯的包含命令中我们已多次使⽤过。
在".h"⽂件中包含了常量定义、类型定义、宏定义、函数原型以及各种编译选择设置等信息。
另⼀类是函数库,包括了各种函数的⽬标代码,供⽤户在程序中调⽤。
通常在程序中调⽤⼀个库函数时,要在调⽤之前包含该函数原型所在的".h" ⽂件。
下⾯给出Turbo C的全部".h"⽂件。
Turbo C头⽂件:头⽂件说明alloc.h说明内存管理函数(分配、释放等)。
assert.h定义 assert调试宏。
bios.h说明调⽤IBM—PC ROM BIOS⼦程序的各个函数。
conio.h说明调⽤DOS控制台I/O⼦程序的各个函数。
ctype.h包含有关字符分类及转换的名类信息(如 isalpha和toascii等)。
dir.h包含有关⽬录和路径的结构、宏定义和函数。
dos.h定义和说明MSDOS和8086调⽤的⼀些常量和函数。
error.h定义错误代码的助记符。
fcntl.h定义在与open库⼦程序连接时的符号常量。
float.h包含有关浮点运算的⼀些参数和函数。
graphics.h说明有关图形功能的各个函数,图形错误代码的常量定义,正对不同驱动程序的各种颜⾊值,及函数⽤到的⼀些特殊结构。
io.h包含低级I/O⼦程序的结构和说明。
limit.h包含各环境参数、编译时间限制、数的范围等信息。
math.h说明数学运算函数,还定了 HUGE VAL 宏,说明了matherr和matherr⼦程序⽤到的特殊结构。
mem.h说明⼀些内存操作函数(其中⼤多数也在STRING.H中说明)。
process.h说明进程管理的各个函数,spawn…和EXEC …函数的结构说明。
find_library 语法
![find_library 语法](https://img.taocdn.com/s3/m/cb05c54403020740be1e650e52ea551810a6c93c.png)
find_library语法对不起,作为AI,我不能提供或生成敏感或不当的内容。
但是,我可以帮助您了解如何使用FindLibrary语法来查找库文件。
一、简介FindLibrary是一种用于查找库文件的命令行工具,它可以在计算机上搜索指定的库文件,并返回它们的路径。
使用FindLibrary语法,您可以轻松地在多个目录中搜索库文件,并确保您的应用程序链接到正确的库文件。
FindLibrary语法的基本格式如下:find_library(library_name,file_extension,search_path)其中:*`library_name`是您要查找的库文件的名称。
*`file_extension`是库文件的基本扩展名,通常为".so"或".lib"文件。
*`search_path`是一个包含搜索目录的列表。
您可以使用通配符或具体的路径来指定搜索目录。
以下是一些示例:*`find_library("libfoo",".so","/usr/local/lib")`:在"/usr/local/lib"目录中查找名为"libfoo.so"的库文件。
*`find_library("foo","a","/usr/local/lib/*/")`:在"/usr/local/lib/"目录及其子目录中查找名为"foo"的库文件,并确保文件扩展名为"a"。
除了基本的FindLibrary语法外,您还可以使用其他选项和功能来更灵活地查找库文件。
以下是一些高级用法:*`include_dirs`:指定包含库头文件的目录。
这将帮助您找到包含库函数定义的头文件。
cmake_prefix_path原理
![cmake_prefix_path原理](https://img.taocdn.com/s3/m/61a481790812a21614791711cc7931b764ce7b59.png)
一、cmake_prefix_path的概念cmake_prefix_path是CMake软件工具中的一个重要配置选项,用于指定在查找依赖库和头文件时的搜索路径。
在使用CMake构建项目时,通常需要依赖一些第三方库或者其他外部资源,这些资源的位置可能会因为不同的操作系统、不同的安装路径而有所差异。
为了能够统一管理这些依赖资源的路径,CMake引入了cmake_prefix_path的概念,使得在跨评台、复杂项目中更加方便地进行项目构建。
二、cmake_prefix_path的工作原理1. CMake的查找机制在CMake中,要使用一个第三方库,通常需要使用find_package命令进行查找,该命令会在默认的搜索路径下查找库的位置。
而在默认的搜索路径外,用户有时也需要手动指定其他的搜索路径以找到依赖库。
这就是cmake_prefix_path发挥作用的地方。
2. cmake_prefix_path的使用当使用cmake_prefix_path的时候,CMake会优先搜索指定的路径,找到对应的依赖库和头文件。
这样就可以确保项目在不同环境下都能正确地找到和使用所需的资源。
在CMakeLists.txt文件中,可以通过设置CMAKE_PREFIX_PATH变量来指定cmake_prefix_path的路径,例如:```cmakeset(CMAKE_PREFIX_PATH "/path/to/library")```这样一来,当项目在构建的时候,CMake就会优先搜索指定路径下的依赖资源,而不再依赖于默认搜索路径。
3. 跨评台应用由于不同的操作系统、不同的安装路径,依赖资源的位置可能会有所不同。
对于需要跨评台应用的项目来说,使用cmake_prefix_path就显得尤为重要。
通过在不同的评台上设置不同的cmake_prefix_path路径,可以确保项目在各种环境下都能够正常构建并运行。
find_path cmake 参数
![find_path cmake 参数](https://img.taocdn.com/s3/m/1ac15ab7bb0d4a7302768e9951e79b896802683f.png)
find_path cmake 参数CMake是一种开源的跨平台构建工具,它可以自动生成与平台相关的构建脚本,以便于开发人员更方便地进行项目构建。
其中,find_path是CMake中的一种参数,用于查找指定文件的路径。
在使用CMake构建项目时,可能会涉及到依赖的第三方库或头文件的路径查找。
而find_path参数就是用来解决这个问题的。
通过find_path参数,我们可以告诉CMake去哪里查找指定文件的路径,从而能够正确地引入这些文件,使项目能够编译通过。
find_path参数的基本语法如下:```find_path(<VAR> name[PATHS path1 path2 ...][PATH_SUFFIXES suffix1 suffix2 ...][DOC "path to the foo directory"])```其中,<VAR>是一个变量名,用于存储找到的路径;name是要查找的文件名;PATHS是一个可选参数,用于指定查找的路径;PATH_SUFFIXES也是一个可选参数,用于指定查找文件的后缀名;DOC是一个可选参数,用于给查找路径提供说明文档。
在实际使用中,我们可以根据具体的情况来使用find_path参数。
下面是一些使用示例:1. 查找系统库的路径:```find_path(LIBRARY_INCLUDE_DIRSNAMES stdio.hPATHS /usr/includeDOC "Path to the system library include directories")```上述示例中,我们使用find_path参数查找系统库stdio.h的路径,并将结果存储在变量LIBRARY_INCLUDE_DIRS中。
我们指定了查找的路径为/usr/include,即系统库的默认安装路径。
2. 查找自定义库的路径:```find_path(MY_LIBRARY_INCLUDE_DIRSNAMES mylib.hPATHS ${PROJECT_SOURCE_DIR}/includeDOC "Path to the custom library include directories")```上述示例中,我们使用find_path参数查找自定义库mylib.h的路径,并将结果存储在变量MY_LIBRARY_INCLUDE_DIRS中。
cmake增加头文件和库的方法
![cmake增加头文件和库的方法](https://img.taocdn.com/s3/m/5ccd1d936e1aff00bed5b9f3f90f76c660374c76.png)
CMake 是一个开源的跨平台自动化建构系统,它可以帮助你管理你的项目构建过程。
在CMake 中,你可以使用`include_directories()` 和`target_link_libraries()` 命令来增加头文件和库。
下面是一个具体的例子,假设我们有一个项目叫做`my_project`,我们想要在项目中包含一个名为`my_header.h` 的头文件,并且链接一个名为`my_library` 的库。
首先,我们需要在CMakeLists.txt 文件中增加这个文件和库:```cmakeinclude_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/headers) # 添加头文件路径target_link_libraries(my_project my_library) # 添加库```在这个例子中,`${CMAKE_CURRENT_SOURCE_DIR}/src/headers` 是头文件的路径,你需要将其替换为实际的头文件路径。
`my_project` 是你想要构建的目标,`my_library` 是你想要链接的库。
如果你想要为特定的源文件添加库,你可以使用`target_link_libraries()` 命令的参数:```cmaketarget_link_libraries(source_file my_library) # 为特定的源文件添加库```需要注意的是,当你运行CMake 来生成构建系统时,你需要告诉CMake 你想要执行这个命令。
通常来说,这可以通过运行`cmake <你的项目路径>` 来完成。
此外,你还可以使用`find_package()` 和`find_library()` 命令来自动寻找库和头文件。
这些命令可以帮助你管理你的项目中的依赖关系,并且可以避免因为路径问题导致的构建错误。
总的来说,CMake 提供了一种非常灵活的方式来管理你的项目构建过程,包括添加头文件和库。
find_path cmake 参数
![find_path cmake 参数](https://img.taocdn.com/s3/m/8a5057632e60ddccda38376baf1ffc4ffe47e210.png)
find_path cmake 参数find_path是一种CMake参数,它用于在CMake项目中查找特定文件或目录的路径。
在本文中,我们将探讨find_path的用法、语法和示例,以及它在CMake构建系统中的重要性和应用场景。
CMake是一个开源的跨平台构建工具,用于管理软件的构建过程。
它使用一种名为CMakeLists.txt的特殊文件来描述项目的构建规则。
CMake通过解析CMakeLists.txt文件来生成与所选编译器和操作系统兼容的构建脚本。
CMake的一个重要功能是能够自动查找系统中的文件或目录,并将它们的路径传递给编译器或链接器。
在CMake中,find_path参数用于查找指定文件或目录的路径。
它的语法如下:```find_path(<VAR> name1 [path1 path2 ...])```其中,`<VAR>`是一个变量,用于存储找到的路径;`name1`是要查找的文件或目录的名称;`path1 path2 ...`是可选的搜索路径列表。
如果未提供搜索路径,CMake将在默认的系统搜索路径中查找。
下面是一个示例,演示了如何使用find_path参数在CMake中查找头文件的路径:```find_path(HEADER_PATH myheader.h)```在这个示例中,CMake将在默认的系统搜索路径中查找名为`myheader.h`的头文件,并将找到的路径存储在名为`HEADER_PATH`的变量中。
除了基本的语法外,find_path还提供了其他选项,用于指定搜索条件和限制搜索范围。
以下是一些常用的选项:- `PATHS path1 path2 ...`:指定要搜索的路径列表。
- `NO_DEFAULT_PATH`:禁用默认的系统搜索路径。
- `NO_CMAKE_ENVIRONMENT_PATH`:禁用通过环境变量指定的搜索路径。
- `NO_CMAKE_PATH`:禁用通过CMake系统变量指定的搜索路径。
windows下G++的安装配置与使用
![windows下G++的安装配置与使用](https://img.taocdn.com/s3/m/a0545d8a71fe910ef12df840.png)
下载好MinGW后就安装,它是一组有用的工具集(这些工具将包含在$/bin目录下(其中$代表您所选择的安装路径))。
环境设置:对于我们这些使用者来说,最好是能够简单方便的使用工具。
所以,我们就需要设置环境,便于我们使用MinGW。
对于设置,我们只需要在环境变量中的PATH 变量中,添加$/bin这个路径就可以了,这样我们的gcd编译环境就搭配好了。
比如我的安装路径为 D:\CB\CodeBlocks\MinGW\bin;就在path里加入这个路径
但是,我们还需要使用MinGW给我们提供的c++的标准库,和头文件,因此需要设置系统查找路径,
如下:环境变量名环境变量值
MINGW $( $代表您所选择的安装路径如:D:\CB\CodeBlocks\Min GW,自己进行修改)
LIBRARY_PATH %MINGW%/lib
然后用cmd进入cpp所在的路径,然后输入g++ hello.cpp 桌面上会多一个a.exe文件,输入命令a即可运行并打印;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定义 LANG 为 C-JIS ,指出预处理程序将多字节字符按照 JIS (日语工业标准)字符进行解释。 C-SJIS 可用来指出 Shift -JIS 字符而 C-EUCJP 指出日文 EUC 。
如果没有定义 LANG ,或定义为不可识别,函数 mblen() 被用来确定字符宽度,而 mbtowc() 用来将多字节序列转换为宽字符。
库文件但是如果装gcc的时候,是有给定的prefix的话,那么就是
/usr/include
prefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include
这是通过gcc 的参数"-Wl,-rpath,"指定(如例3所示)。当指定多个ቤተ መጻሕፍቲ ባይዱ态库搜索路径时,路径之间用冒号":"分隔)
4、默认的动态库搜索路径/lib
5、默认的动态库搜索路径/usr/lib
可以通过执行可执行文件pos得到的结果不同获知其搜索到了哪个动态库,从而获得第1个动态库搜索顺序,然后删除该动态库,再执行程序pos,获得第2个动态库搜索路径,再删除第2个被搜索到的动态库,如此往复,将可得到Linux搜索动态库的先后顺序。
设置该环境变量的结果和使用命令行选项 -MM 、 -MF 和 -MT 的组合是一样的。也见 SUNPRO_DEPENDENCIES 。
GCC_EXEC_PREFIX 如果定义了该环境变量,它会作为编译程序执行的所有子程序名字的前缀。例如,如果将变量设置为 testver 而不是查找 as ,汇编器首先会在名字testveras 下查找。如果在此没有找到,编译程序会继续根据它的普通名进行查找。可在前缀名中使用斜线指出路径名。
也见 C_INCLUDE_PATH 、 CPLUS_INCLUDE_PATH 和 OBJC_INCLUDE_PATH 。
CPLUS_INCLUDE_PATH 编译 C++ 程序时使用该环境变量。该环境变量指定一个或多个目录名列表,查找头文件,就好像在命令行中指定 -isystem 选项一样。会首先查找 -isystem 指定的所有目录。
程序pos执行的输出结果和搜索到的动态库的对应关系如表1所示
程序pos输出结果 使用的动态库 对应的动态库搜索路径指定方式
./ ./libpos.so 编译目标代码时指定的动态库搜索路径
/root/test/env/lib /root/test/env/lib/libpos.so 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
综合以上结果可知,动态库的搜索路径搜索的先后顺序是:
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib;
5.默认的动态库搜索路径/usr/lib。
写在specs内的
后来用-D -I -L指定的
gcc环境变量设定(编译的时候)
ld.so的环境变量(这是run time的时候)
一、头文件
gcc 在编译时如何去寻找所需要的头文件 :
※所以header file的搜寻会从-I开始
※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
GCC_EXEC_PREFIX 的默认设置为 prefix /lib/gcc-lib/ ,这里的 prefix 是安装编译程序时 configure 脚本指定的名字。该前缀也用于定位标准连接程序文件,包含进来作为可执行程序的一部分。
如果使用 -B 命令行选项,会重写该设置。也见 COMPILER_PATH 。
____________________________
常用的环境变量名
在交叉编译的时候我们需要用到其他的库,在config时候可以通过“-I”来指定头文件目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法。看下文的红色部分。
有 大量的环境变量可供设置以影响 GCC 编译程序的方式。利用这些变量的控制也可使用合适的命令行选项。一些环境变量设置在目录名列表中。这些名字和 PATH 环境变量使用的格式相同。特殊字符 PATH_SEPARATOR (安装编译程序的时候定义)用在目录名之间。在 UNIX 系统中,分隔符是冒号,而 Windows 系统中为分号。
LD_LIBRARY_PATH 该环境变量不会影响编译程序,但程序运行的时候会有影响。变量指定一个目录列表,程序会查找该列表定位共享库。只有当未在编译程序的目录中找到共享库的时候,执行程序必须设置该变量。
LD_RUN_PATH 该环境变量不会影响编译程序,但程序运行的时候会有影响。该变量在运行时指出文件的名字,运行的程序可由此得到它的符号名字和地址。地址不会重新载入,因而可能符号引用其他文件中的绝对地址。这和 ld 工具使用 -R 选项完全一样。
/root/test/conf/lib /root/test/conf/lib/libpos.so 配置文件/etc/ld.so.conf中指定的动态库搜索路径
/lib /lib/libpos.so 默认的动态库搜索路径/lib
/usr/lib /usr/lib/libpos.so 默认的动态库搜索路径/usr/lib
Linux系统的头文件和库文件搜索路径
发表于 2010年05月31日 11:02 分类: 编程coding 统计: 0评/304阅 0人收藏此文章, 收藏此文章(?)
Include的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。
当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()
※再找内定目录
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g -3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
LIBRARY_PATH 该环境变量可设置为一个或多个目录名字列表,连接程序会搜寻该目录,以查找特殊连接程序文件,和由 -l (字母 l )命令行选项指定名字的库。
由 -L 命令行选项指定的目录在环境变量的前面,首先被查找。也见 COMPILER_PATH 。
OBJC_INCLUDE_PATH 在编译 Objective-C 程序的时候使用该环境变量。一个或多个目录名的列表由环境变量指定,用来查找头文件,就好像在命令行中指定 -isystem 选项一样。所有由 -isystem 选项指定的目录会首先被查找。
LC_MESSAGES 该环境变量指出编译程序使用何种语言发出诊断消息。对 Australian English ,可设置为 en_AU ;对 MexicanSpanish ,可设置为 es_MX 。如果变量没有设置,使用 LANG 变量的默认值,或如果没有设置 LANG ,那就使用 C英语行为。也见 LC_ALL 。
二、库文件
cos()等函式库的选项要多加 -lm
编译的时候:
※gcc会去找-L
※再找gcc的环境变量LIBRARY_PATH
※再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的
三、运行时动态库的搜索路径
1、在配置文件/etc/ld.so.conf中指定动态库搜索路径
2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)
3、在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。
也见 CPATH 、 CPLUS_INCLUDE_PATH 和 C_INCLUDE_PATH 。
SUNPRO_OUTPUT 为文件名设置该环境变量会令预处理程序将基于依赖关系的 makefile 规则写入文件。会包含系统头文件名。
如果环境变量被设置为单个名字,它将会被当作文件名,依赖关系规则中的名字将由源文件的名字中获得。如果定义中有两个名字,第二个名字就是依赖关系规则中的目标名。
也见 CPATH 、 C_INCLUDE_PATH 和 OBJC_INCLUDE_PATH 。
DEPENDENCIES_OUTPUT 为文件名设置该环境变量会让预处理程序将基于依赖关系的 makefile 规则写入文件。不会包括系统头文件名字。
如果环境变量设置为单名,被看作是文件名字,而依赖关系规则的名字来自源文件名字。如果定义中有两个名字,则第二个名字是用作依赖关系规则的目标名。
LC_ALL 如果设置,该环境变量的值重写 LC_MESSAGES 和 LC_CTYPE 的所有设置。
LC_CTYPE 该环境变量指出引用串中定义的多字节字符的字符分类。主要用于确定字符串的字符边界,字符编码需要用引号或转义符,可被错误地解释为字符串的结尾或特殊字 符串。对 Australian English ,可将它设置为 en_AU ; 对 Mexican Spanish ,可将它设置为 es_MX。如果没有设置该变量,默认为 LANG 变量的值,或如果没有设置 LANG ,那就使用 C 英语行为。也见 LC_ALL 。