建设网站主机可以用吗做软件开发有前途吗

diannao/2025/10/17 14:49:34/文章来源:
建设网站主机可以用吗,做软件开发有前途吗,上海环球金融中心大厦图片,建立网站需要多少钱?Makefile中: ? 的区别 在Makefile中我们经常看到 : ? 这几个赋值运算符#xff0c;那么他们有什么区别呢#xff1f;我们来做个简单的实验 新建一个Makefile#xff0c;内容为#xff1a; ifdef DEFINE_VRE VRE “Hello World!” else endif ifeq ($(OPT),define) VRE… Makefile中: ? 的区别 在Makefile中我们经常看到 : ? 这几个赋值运算符那么他们有什么区别呢我们来做个简单的实验 新建一个Makefile内容为 ifdef DEFINE_VRE VRE “Hello World!” else endif ifeq ($(OPT),define) VRE ? “Hello World! First!” endif ifeq ($(OPT),add) VRE “Kelly!” endif ifeq ($(OPT),recover) VRE : “Hello World! Again!” endif all: echo $(VRE) 敲入以下make命令 make DEFINE_VREtrue OPTdefine 输出Hello World! make DEFINE_VREtrue OPTadd 输出Hello World! Kelly! make DEFINE_VREtrue OPTrecover  输出Hello World! Again! make DEFINE_VRE OPTdefine 输出Hello World! First! make DEFINE_VRE OPTadd 输出Kelly! make DEFINE_VRE OPTrecover 输出Hello World! Again! 从上面的结果中我们可以清楚的看到他们的区别了 是最基本的赋值 : 是覆盖之前的值 ? 是如果没有被赋值过就赋予等号后面的值 是添加等号后面的值 之前一直纠结makefile中“”和“:”的区别到底有什么区别因为给变量赋值时两个符号都在使用。网上搜了一下有人给出了解答但是本人愚钝看不懂什么意思。几寻无果之下也就放下了。今天看一篇博客无意中发现作者对于这个问题做了很好的解答。解决问题之余不免感叹有时候给个例子不就清楚了吗为什么非要说得那么学术呢。^_^ 1、“” make会将整个makefile展开后再决定变量的值。也就是说变量的值将会是整个makefile中最后被指定的值。看例子 x foo             y $(x) bar             x xyz 在上例中y的值将会是 xyz bar 而不是 foo bar 。 2、“:” “:”表示变量的值决定于它在makefile中的位置而不是整个makefile展开后的最终值。 x : foo             y : $(x) bar             x : xyz 在上例中y的值将会是 foo bar 而不是 xyz bar 了。 makefile宏定义EXTRA_CFLAGS -D与CONFIG_ y EXTRA_CFLAGS -D 与CONFIG_ y 1. 假如定义一个宏CONFIG_DEBUG 在.c里面定义为#define CONFIG_DEBUG 在makefile里定义为: CONFIG_DEBUGy 假如说我们想在makefile里为.c文件进入一个宏定义就用EXTRA_CFLAGS DCONFIG_DEBUG(等价于在.c文件里定义#define CONFIG_DEBUG) 这时CONFIG_DEBUGy与EXTRA_CFLAGS DCONFIG_DEBUG的区别应该你已经看出来的前者是对makefile编译时用的比如说obj-(CONFIG_DEBUG) test.o,而后者则是对.c源文件里的用的比如说 #if defined(CONFIG_DEBUG)  ... #else ... #endif 2. 假如定义一个宏CONFIG_DEBUG 3 在.c里面定义为#define CONFIG_DEBUG 3 假如说我们想在makefile里为.c文件进入一个宏定义就用EXTRA_CFLAGS -DCONFIG_DEBUG3 此时两者的定义完全相同。 Makefile中通配符*与%的区别是什么? 此两者均为通配符但更准确的讲%为Makefile规则通配符一般用于规则描述如 %.o:%c $(CC)  $ -o $ 表示所有的目标文件及其依赖文件或者 $(filter %.c ,SOURCES) 此处SOURCES表示包含.c .cc .cpp等多类型源文件该过滤器函数将c文件过滤出来而%.c即为此过滤器规则。 通配符*则不具备上述功能。尤其是在Makefile当变量定义或者函数调用时该通配符的展开功能就失效了即不能正常使用了此时需要借助wildcard函数。二者应用范围不同。 Makefile有三个非常有用的变量。分别是$$^$代表的意义分别是 # 这是上面那个程序的Makefile文件:  mainmain.o mytool1.o mytool2.o  gcc -o main main.o mytool1.o mytool2.o  main.omain.c mytool1.h mytool2.h  gcc -c main.c  mytool1.omytool1.c mytool1.h  gcc -c mytool1.c  mytool2.omytool2.c mytool2.h  gcc -c mytool2.c 有了这个Makefile文件不论我们什么时候修改了源程序当中的什么文件我们只要执行make命令我们的编译器都只会去编译和我们修改的文件有关的文件其它的文件它连理都不想去理的。 下面我们学习Makefile是如何编写的。 在Makefile中也#开始的行都是注释行.Makefile中最重要的是描述文件的依赖关系的说明。一般的格式是  targetcomponents  TAB rule  第一行表示的是依赖关系。第二行是规则。  比如说我们上面的那个Makefile文件的第二行。  mainmain.o mytool1.o mytool2.o  表示我们的目标(target)main的依赖对象(components)是main.o mytool1.omytool2.o当倚赖的对象在目标修改后修改的话就要去执行规则一行所指定的命令。 就象我们的上面那个Makefile第三行所说的一样要执行 gcc-o main main.o mytool1.o mytool2.o注意规则一行中的TAB表示那里是一个TAB键 Makefile有三个非常有用的变量。 分别是$$^$代表的意义分别是  $--目标文件$^--所有的依赖文件$--第一个依赖文件。 如果我们使用上面三个变量 那么我们可以简化我们的Makefile文件为  # 这是简化后的Makefile  mainmain.o mytool1.o mytool2.o  gcc -o $ $^  main.omain.c mytool1.h mytool2.h  gcc -c $  mytool1.omytool1.c mytool1.h  gcc -c $ mytool2.omytool2.c mytool2.h  gcc -c $  经过简化后,我们的Makefile是简单了一点不过人们有时候还想简单一点。这里我们学习一个Makefile的缺省规则 .c.o gcc -c $ 这个规则表示所有的 .o文件都是依赖与相应的.c文件的。例如mytool.o依赖于mytool.c这样Makefile还可以变为  # 这是再一次简化后的Makefile  mainmain.o mytool1.o mytool2.o  gcc -o $ $^  .c.o  gcc -c $  好了我们的Makefile 也差不多了如果想知道更多的关于Makefile的规则可以查看相应的文档。 makefile里PHONY的相关介绍 PHONY 目标并非实际的文件名只是在显式请求时执行命令的名字。有两种理由需要使用PHONY目标避免和同名文件冲突改善性能。 如果编写一个规则并不产生目标文件则其命令在每次make该目标时都执行。例如   clean:   rm *.o temp 因为rm命令并不产生clean文件则每次执行make clean的时候该命令都会执行。如果目录中出现了clean文件则规则失效了没有依赖文件文件clean始终是最新的命令永远不会执行为避免这个问题可使用.PHONY指明该目标。如   .PHONY : clean   这样执行make clean会无视clean文件存在与否。 已知phony 目标并非是由其它文件生成的实际文件make会跳过隐含规则搜索。这就是声明phony目标会改善性能的原因即使你并不担心实际文件存在与否。   完整的例子如下   .PHONY : clean   clean :   rm *.o temp phony 目标可以有依赖关系。当一个目录中有多个程序将其放在一个makefile中会更方便。因为缺省目标是makefile中的第一个目标通常将这个phony目标叫做all其依赖文件为各个程序   all : prog1 prog2 prog3   .PHONY : all   prog1 : prog1.o utils.o            cc -o prog1 prog1.o utils.o   prog2 : prog2.o            cc -o prog2 prog2.o   prog3 : prog3.o sort.o utils.o            cc -o prog3 prog3.o sort.o utils.o 假设你的一个项目最后需要产生两个可执行文件。你的主要目标是产生两个可执行文件但这两个文件是相互独立的——如果一个文件需要重建并不影响另一个。你可以使用“假象目的”来达到这种效果。一个假象目的跟一个正常的目的几乎是一样的只是这个目的文件是不存在的。因此 make总是会假设它需要 被生成当把它的依赖文件更新后就会执行它的规则里的命令行。 如果在我们的 makefile 开始处输入 all : exec1 exec2 其中 exec1 和 exec2是我们做为目的的两个可执行文件。 make把这个 all 做为它的主要目的每次执行时都会尝试把 all更新。但既然这行规则里没有哪个命令来作用在一个叫 all的实际文件事实上 all并不会在磁碟上实际产生所以这个规则并不真的改变 all的状态。可既然这个文件并不存在所以 make会尝试更新 all 规则因此就检查它的依靠 exec1, exec2是否需要更新如果需要就把它们更新从而达到我们的目的。 假象目的也可以用来描述一组非预设的动作。例如你想把所有由 make产生的文件删除你可以在 makefile里设立这样一个规则 veryclean : rm *.o rm myprog 前提是没有其它的规则依靠这个 veryclean目的它将永远不会被执行。但是如果你明确的使用命令 make veryclean make会把这个目的做为它的主要目标执行那些 rm命令。 如果你的磁碟上存在一个叫 veryclean文件会发生什么事这时因为在这个规则里没有任何依靠文件所以这个目的文件一定是最新的了所有的依靠文件都已经是最新的了所以既使用户明确命令 make重新产生它也不会有任何事情发生。解决方法是标明所有的假象目的用 .PHONY这就告诉 make不用检查它们是否存在于磁碟上也不用查找任何隐含规则直接假设指定的目的需要被更新。在 makefile里加入下面这行包含上面规则的规则 .PHONY : veryclean 就可以了。注意这是一个特殊的 make规则make知道 .PHONY是一个特殊目的当然你可以在它的依靠里加入你想用的任何假象目的而 make知道它们都是假象目的。 Makefile与shell脚本区别 在Makefile可以调用shell脚本但是Makefile和shell脚本是不同的。本文试着归纳一下Makefile和shell脚本的不同。 1、 shell中所有引用以$打头的变量其后要加{},而在Makefile中的变量是以$打头的后加()。实例如下 Makefile PATH/data/ SUBPATH$(PATH) Shell PATH/data/ SUBPATH${PATH} 2、Makefile中所有以$打头的单词都会被解释成Makefile中的变量。如果你需要调用shell中的变量或者正则表达式中锚定句位$都需要加两个$符号$$。实例如下 PATH/data/ all:     echo ${PATH}     echo $$PATH  例子中的第一个${PATH}引用的是Makefile中的变量而不是shell中的PATH环境变量后者引用的事Shell中的PATH环境变量。 3、通配符区别 shell 中通配符*表示所有的字符 Makefile 中通配符%表示所有的字符 4、在Makefile中只能在某一个target下的命令中调用Shell脚本其他地方是不能输出的。比如如下代码就是没有任何输出 VARHello echo $VAR all:    .....以上代码任何时候都不会输出没有在任何target下得命令内如果上述代码改为如下 VARHello all:     echo $VAR     .....以上代码在make all的时候将会执行echo命令。 5、在Makefile中执行shell命令一行创建一个进程来执行。这也是为什么很多Makefile中有很多行的末尾都是“;  \”以此来保证代码是一行而不是多行这样Makefile可以在一个进程中执行例如 SUBDIRsrc example all:     for subdir in $(SUBDIR); \     do\         echo building ; \     done上述可以看出for循环中每行都是以”; \”结尾的。 6、获取当前目录 PATHpwd 注意是,不是’  Makefile中的shell2009-12-24 09:27:05 分类 一下摘录Makefile中调用shell的一段 install:         -if [ ! -e xxx ]; then sudo mkdir xxx; fi 注意将上面的if语句写到一行的话必须在fi前面加上分号否则会出现下面错误 unexpected end of file 下面转一个相关文章 Makefile与Shell的问题   大概只要知道Makefile的人都知道Makefile可以调用Shell脚本。但是在实际使用时并不那么简单一些模棱两可的地方可能会让你抓狂。你若不信可以先看几个例子想象一下这些这些例子会打印什么内容记下你想象的结果然后在计算机上运行这些例子对照看一下。     示例一 if [ $(BUILD) debug ]; then  echo build debug; else echo build release; fi all:     echo done 示例二 all:     CCarm-linux-gcc     echo $(CC) 示例三 CCarm-linux-gcc all:     echo $(CC) 示例四 SUBDIRsrc example all:     for subdir in $(SUBDIR); \     do\         echo building $(subdir); \     done     说明 1.         Shell脚本在target里才有效其它地方都被忽略掉了。所以示例一中”build debug”之类的字符串根本打印不出来。示例一的正确写法是   示例一 all:     if [ $(BUILD) debug ]; then  echo build debug; else echo build release; fi     echo done   2.         make把每一行Shell脚本当作一个独立的单元它们在单独的进程中运行。示例二中两行Shell脚本在两个莫不相干的进程里运行第一个进程把CC设置为arm-linux-gcc第二个进程是不知道的所以打印的结果自然不是arm-linux-gcc了。示例二的正确写法是   示例二 all:     CCarm-linux-gcc; echo $(CC) 或者 all: CCarm-linux-gcc; \ echo $(CC)   3.         make在调用Shell之前先进行预处理即展开所有Makefile的变量和函数。这些变量和函数都以$开头。示例三中Shell拿的脚本实际上是echo arm-linux-gcc所以打印结果正确。   4.         make预处理时所有以$开头的它都不会放过。要想引用Shell自己的变量应该以$$开头。另外要注意Shell自己的变量是不需要括号的。示例四的正确写法是   示例四 SUBDIRsrc example all:     for subdir in $(SUBDIR); \     do\         echo building $$subdir; \     done 感谢Thanks  linux Makefile obj-m obj-y .. 分类 Linux 2013-02-20 14:01 1773人阅读 评论(0) 收藏 举报 目标定义是Kbuild Makefile的主要部分也是核心部分。主要是定义了要编 译的文件所有的选项以及到哪些子目录去执行递归操作。 最简单的Kbuild makefile 只包含一行 例子 obj-y foo.o 该例子告诉Kbuild在这目录里有一个名为foo.o的目标文件。foo.o将从foo.c 或foo.S文件编译得到。 如果foo.o要编译成一模块那就要用obj-m了。所采用的形式如下 例子 obj-$(CONFIG_FOO) foo.o $(CONFIG_FOO)可以为y(编译进内核) 或m(编译成模块)。如果CONFIG_FOO不是y 和m,那么该文件就不会被编译联接了 Linux各级内核源代码的子目录下都有Makefile大多数Makefile要嵌入主目录下的Rule.makeRule.make将识别各个Makefile中所定义的一些变量。变量obj-y表示需要编绎到内核中的目标文件名集合定义O_TARGET表示将obj-y连接为一个O_TARGET名称的目标文件定义L_TARGET表示将obj-y合并为一个L_TARGET名称的库文件。同样obj-m表示需要编绎成模块的目标文件名集合。如果还需进行子目录make则需要定义subdir-y和subdir-m。在Makefile中用obj-$(CONFIG_BINFMT_ELF) binfmt_elf.o和subdir-$(CONFIG_EXT2_FS) ext2这种形式自动为obj-y、obj-m、subdir-y、subdir-m添加文件名。有时情况没有这么单纯还需要使用条件语句个别对待。Makefile中还有其它一些变量如mod-subdirs定义了subdir-m以外的所有模块子目录。  Rules.make是如何使make进入子目录的呢? 先来看subdir-y是如何处理的在Rules.make中先对subdir-y中的每一个文件名加上前缀_subdir_再进行排序生成subdir-list集合再以它作为目标集对其中每一个目标产生一个子make同时将目标名的前缀去掉得到子目录名作为子make的起始目录参数。subdir-m与subdir-y类似但情况稍微复杂一些。由于subdir-y中可能有模块定义因此利用mod-subdirs变量将subdir-y中模块目录提取出来再与subdir-m合成一个大的MOD_SUB_DIRS集合。subdir-m的目标所用的前缀是_modsubdir_。  一点说明子目录中的Makefile与Rules.make都没有嵌入.config文件它是通过主Makefile向下传递MAKEFILES变量完成的。MAKEFILES是make自已识别的一个变量在执行新的Makefile之前make会首先加载MAKEFILES所指的文件。在主Makefile中它即指向.config。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工伤做实的那个网站找人做网站大概多少钱

有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。 即:abc a! b! c! 请找出所有满足要求的三位数.审好题很重要:三位数而非,三位数的个数 先写出一个函数求出某个数的阶乘,在跟别求出一个三位数的个十百位&…

178网站建设西安买公司的网站建设

今天在使用souce建表的时候发现自己表结构中的中文出现了乱码问题,那么具体的解决方案如下: 首先我们先使用命令行连接自己的数据库 mysql -u root -p 12345 然后使用show variables like "char%"; 如果说你的这个里面不是utf-8那么就是出现了…

php网站建设价格临沂制作网站软件

恕我直言,我一直都用 git pull 从来没有用过 git fetch git fetch, git pull 都可以用于获取远程仓库的内容,但它们有不同的作用和用法。 git fetch 用途:git fetch 用于从远程仓库获取最新的提交,但不会自动合并或更新本地分支…

网站访客qq获取系统 报价织梦小说网站源wap站

贴片陶瓷气体放电管 GDT工作原理GDT主要特性参数典型电路压敏电阻与 TVS 管的区别 GDT工作原理 陶瓷气体放电管是一种电子器件,其工作原理基于气体放电现象。这种管子的内部填充了一种特定的气体,通常是氖气或氩气。当管子两端施加足够的电压时&#xf…

福清营销型网站建设方案qq的seo综合查询

购买装备 发布时间: 2017年7月9日 18:17 最后更新: 2017年7月9日 21:05 时间限制: 1000ms 内存限制: 128M 描述 最近盛大的一款游戏传奇世界极其火爆。游戏玩家John,想购买游戏中的装备。已知游戏的商店里有n件装备,第i件装备具有属性值ai&#xf…

更新网站的图片加不上水印云服务器做网站一般配置

自动控制:控制系统的稳定性 在自动控制领域,控制系统的稳定性是一个至关重要的问题。稳定性决定了系统在受到扰动后是否能够恢复到平衡状态。本文将介绍控制系统稳定性的基本概念、如何利用特征值分析稳定性,并通过具体示例和Python代码展示…

网站设计和平面设计拆分盘网站建设

⭐简单说两句⭐ ✨ 正在努力的小新~ 💖 超级爱分享,分享各种有趣干货! 👩‍💻 提供:模拟面试 | 简历诊断 | 独家简历模板 🌈 感谢关注,关注了你就是我的超级粉丝啦! &…

psd 网站唯美wordpress简约主题

前言:堆算是一种相对简单的数据结构, 本篇文章将详细的讲解堆中的知识点, 包括那些我们第一次学习堆的时候容易忽略的内容, 本篇文章会作为重点详细提到。 本篇内容适合已经学完C语言数组和函数部分的友友们观看。 目录 什么是堆 建堆算法…

美工设计网站推荐seo多久可以学会

基于3Blue1Brown视频的笔记 一种新的看待方式 对于一个向量,比如说,如何看待其中的3和-2? 一开始,我们往往将其看作长度(从向量的首走到尾部,分别在x和y上走的长度)。 在有了数乘后&#xff0…

做网站销售好吗西安公司网站建设服务商

Linux下编译、链接、加载运行C OpenCV的两种方式及常见问题的解决 在Linux下安装完OpenCV C之后(还没有安装的读者请参考Ubuntu 18.04 安装OpenCV C),本文将探索Linux下编译、链接C OpenCV的两种方式,并且给出笔者在初次尝试时遇…

如何做分销型网站深圳模板网站建设案例

今天。。。不,是昨天,聂老大让我们写暑期总结 其中有这么一个 (300字啊。。。我得好好想想怎么编) 嘛,在这写点不敢交上去的内容吧。 7月总结 我收获了什么 很多课件 两个qq群 slay.one被人虐 联盟无畏先锋的号到了20级…

面包店网站建设论文网上怎么自己做网站

作者/云荒杯倾写在前面vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项使用频率、使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧,回头再…

容桂新网站建设动态ip怎么建设网站

题目描述 【5键键盘的输出】有一个特殊的 5键键盘,上面有 a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键。 a键在屏幕上输出一个字母 a; ctrl-c将当前选择的字母复制到剪贴板; ctrl-x将当前选择的 字母复制到剪贴板,并清空选择的字母; ctrl-v将当前剪贴板里的字母…

php网站开发软件东莞网页

首先看看下面这段程序: uint32_t compare 10; for (uint32_t i compare; i > 0; --i) { .......... } 这是一段比较危险的程序, 当 i的值变为 -1的时候,其实由于i是一个非负数整形,强制类型转换后,i又…

如何自己建站网站制作如何运营一个电商平台

判断两个变量是否相等在任何编程语言中都是非常重要的功能。 JavaScript 提供了 和 两种判断两个变量是否相等的运算符,但我们开始学习的时候 JavaScript 的时候,就被一遍又一遍的告知: 要求变量的类型和值均相等,才能返回true…

网站建设方案书 广东图书网站开发背景

随着《幻兽帕鲁》这款游戏的日益流行,越来越多的玩家希望能够在自己的服务器上体验这款游戏。然而,搭建一个稳定、高效的游戏服务器需要仔细的规划和配置。本文将分享搭建《幻兽帕鲁》服务器所需的配置及搭建步骤,助力大家获得更加畅快的游戏…

安徽省建设部网站官网济南网站建设直播

Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob、Queue、File 和 Table,其中的 Table 就是本文的主角 Azure Table storage。 Azure Table storage 是一个在云端存储结构化 NoSQL 数据的服务,它不仅存取速…

做网站推荐深圳有做网站的公司

指令 描述 举例 set 存入单个数据 set number 1 setex 存入并设置过期时间 setex key 30 value setnx 不存在则存入,实现分布式锁 setnx key value msetnx 不存在则批量存入,原子性操作 msetnx key1 value1 key2 value2 有一个key存在则整个语句插入失败…

免费自助建站源码网站建设2018需要什么

Kotlin Flow 是 Kotlin 协程库中的一个组件,它提供了处理异步数据流的能力。Kotlin Flow 类似于 RxJava 中的 Observable,但它完全基于 Kotlin 协程设计,使得异步流的操作变得更加简单和直观。 Flow 是冷流(cold stream&#xff…

具有价值的微网站建设网站流量数据查询

参考文章:https://blog.csdn.net/Edwinwzy/article/details/129580636 虚拟机启用共享文件夹后,/mnt/hgfs下面为空,使用 vmware-hgfsclient 查看设置的共享文件夹名字也是为空。 解决方法: 1. 重新安装vmware tools. 在菜单…