gcc编译cgcc 多文件编译的方式,之后如何运行

posts - 0,&
comments - 1,&
trackbacks - 0
&&&&GCC是Linux操作系统下一个非常重要的源代码编译工具,有着许多重要的选项,支持许多不同语言的编译,如C、C++、Ada、Fortran、Objective、Perl、Python、Ruby以及Java等,甚至Linux的许多内核和许多其他自由软件以及开放源码应用程序都是用C语言编写并经gcc编译而成的.
&&& 1.编译单个源文件
&&& [例如]在屏幕上打印"Hello,Linux."
&&& [源代码]
&&& #include&stdio.h&
&&& #include&stdlib.h&
&&& int main(int argc,char **argv)
&&&&&&& printf("Hello,Linux.\n");
&&&&&&& exit(0);
&&& 将源文件保存为hello.c,开始进行编译
&&& $gcc -o hello hello.c
&&& 编译成功完成后,在当前路径下,生成一个名为hello的文件,然后执行
&&& $./hello
&&& 在屏幕上,你将会看到打印结果:Hello,Linux.
&&& 说明:在默认情况下,编译成功完成后,会在当前路径下,生成一个名为a.out的文件,然后执行$./a.out便可打印结果,但通常可以通过选项-o来指定自己的可执行程序名称;
&&& 2.编译多个源文件
&&& 3.使用外部函数库
&&& 4.使用共享函数库和静态函数库
&&& 5.gcc选项详细描述
阅读(...) 评论() &gcc编译和运行C程序 - 简书
gcc编译和运行C程序
本次案例使用如下代码进行测试
#include &stdio.h&
int add_range(int low, int high){
for(i = i &= i++){
sum = sum +
int main(){
int result[100];
result[0] = add_range(1, 10);
result[1] = add_range(1, 100);
printf("result[0] = %d\nresult[1] = %d\n", result[0], result[1]);
gcc的基本用法
gcc[options][filenames]
当不使用任何选项的时候编译c代码,将产生一个a.out可执行文件,如下
运行a.out进行查看
也可以为编译后的文件指定一个文件名,如下产生test可执行文件
运行test查看
-o 后面必须跟上一个文件名,如 -o outline
1、预处理阶段
使用-E选项,对输入文件只做预处理不编译。当使用这个选项时,预处理器的输出被送到标准输出而不是存储到文件。如果想将预处理的输出存储到文件,可结合-o选项使用,使用如下,less指令是查看 test.i文件
2、编译阶段
使用-S进行编译,如下,产生.i为后缀的编译文件
3、汇编阶段
使用-c进行编译如下,将C源文件或者汇编语言文件编译成可重定向的目标文件(二进制形式),其默认后缀为.o。
4、链接阶段
可将不同的可重定向文件合并在一起,生成可执行文件
这里使用-c选项输出到成可执行文件,如下
5、执行阶段
然后就可以执行可执行文件了,如下
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
2016年国庆假期终于把此书过完,整理笔记和体会于此。 关于书名 书名源于俄罗斯的演员斯坦尼斯拉夫斯基创作的《演员的自我修养》,作者为了写这本书前前后后修改了三十年之久,临终前才同意不在修改,拿去出版。使用这个书名一方面书单内容的确不是介绍一门新的编程语言或是展示一些实用的...
一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于隔离 : 分为 虚拟地址空间 和 物理地址空间 分段 : 把一段程序所需要的内存空间大小映射到某个地址空间 分页 : 把地址空间人为地等分成固定大小的页,每一页...
Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一个:)大多数的美国人读 ubuntu 时,将 u 作为元音发音,类似单词 who 或者 boo ,重音在第二...
很难迈出这个坎儿,动笔记录那些久久未能平复的情感,我的文字太过苍白,忌惮着看不出彼时彼景,荒了此刻此心。学中医的师姐说:“其实,身体比头脑更为敏感,与其说是头脑指挥四肢,不如讲身体控制了头脑。”我表示认同。
小俺妈最近很是忧愁,她的儿子小俺莫名了许久!ooo
1)你何以强大? 前两天和一个友人聊起一个问题:当父母有多个孩子时,父亲母亲分别更宠爱什么样的孩子? 友人的回答是:“父亲更宠爱强壮的孩子,母亲更宠爱柔弱的孩子。因为,父亲更重视力量,而母亲则倾向于保护弱小。” 然后,我就想到自己。一直以来,我都认为爸爸最宠爱我,是因为我和...
【题记】源于最近看的一本书《哈佛非虚构写作课--怎样讲好一个故事》,其中有一篇是《故事之重》。文中讲到在一个难民营,每个黑夜都有七十五名婴儿的尸体被埋葬,这些婴儿因饥饿或者疾病而死。但即便环境如此,每晚却能听到甜美的吟唱和深深的律动,这是难民们的一种生活仪式,他们用晚间讲故...
12外面在下雨,今天艾没有来,戟也没有心情玩。大厅空空的,林姨也不知道去哪儿了。很多年后,戟觉得他那天睡着了就好了。 昏暗的楼道让人有了些许睡意,戟无聊地趴在地板上,没人陪他玩。爸爸的房间半掩着,在这昏暗楼道独树一帜。 直到现在戟也不知道他为什么会走过去,肯定不是好奇心。那...
文/豆豆 家庭教育工作者,生涯规划师 春节期间,我去朋友家吃饭,家里6岁的外甥女也回到了姥姥家过年,临近中午我们一起包饺子,小家伙兴奋不已,说自己会擀皮,也想要参与,老人怕孩子擀皮太慢,供不上包,就让孩子擀两个,说剩余的我们来做。孩子不干,坚定地说:我能供上你们,我要擀!我...NotePad++是一款轻型的免费软件,相对于VC等大型软件来说,具有简便高效的特点。如果我们能够使用NotePad++来编译运行C程序,那么可以说是非常方便的。下面我们就来介绍一下如何用NotePad++来编写并运行C程序。
NotePad++ (百度搜索即得)TDM-GCC,或Dev C++ (文中有地址,或上官网下载)等
1.下载软件并安装:NotePad++(利用文本编辑功能)TDM-GCC(GCC编译器,GCC For Windows中比较方便的一个版本)百度TDM-GCC进入官网即可。这里为了方便,提供原版安装包:链接:http://pan.baidu.com/s/1o6HUxo2备用地址:链接:http://pan.baidu.com/s/1c01tGJ2 密码:2gey或者Dev C++(利用内部的gcc编译器)Dev C++我是上官网下载的,这里为了方便,提供原版安装包:主链接:http://pan.baidu.com/s/1mgspFPe备用链接: 密码:tkdi2.设置环境变量:TDM-GCC已经设定好了环境变量,如果是Dev-Cpp,需要手动配置:在&计算机&图标或按钮上,右键属性,有一个”高级系统设置“,点击这个按钮,修改。如果存在Path属性,直接编辑,在最末尾加上个分号然后写上Dev-Cpp的安装路径至bin文件夹;不存在,直接新建,加上该条。注:如出现&找不到命令&的情况,即为未配置好环境变量,可能是编译器安装出现问题所致。请查找目录至bin文件夹,看有否gcc.exe文件。如未出现,即为安装问题。
3.创建文件:新建一个.c文件,输入#include&stdio.h&int main(){ printf(&Hello World!\n&); return 0;}并保存。4.编译并运行:单击菜单,选择最上选项”运行“,或直接按下F5。弹出运行窗口。输入:cmd /k gcc -o &$(CURRENT_DIRECTORY)\$(NAME_PART).exe& &$(FULL_CURRENT_PATH)& && CLS && &$(CURRENT_DIRECTORY)\$(NAME_PART).exe& & PAUSE & EXIT单击运行即可。也可以使用其他命令:编译:cmd /k gcc -Wall -o &$(CURRENT_DIRECTORY)\$(NAME_PART).exe& &$(FULL_CURRENT_PATH)& & PAUSE & EXIT运行:cmd /k &$(CURRENT_DIRECTORY)\$(NAME_PART).exe& & PAUSE & EXIT
5.命令行解释:可以直接点击保存,弹出窗口,输入名称如”编译并运行 C“,并设定好快捷键。关于脚本行:cmd /k gcc -o &$(CURRENT_DIRECTORY)\$(NAME_PART).exe& &$(FULL_CURRENT_PATH)& && CLS && &$(CURRENT_DIRECTORY)\$(NAME_PART).exe& & PAUSE & EXITcmd /k是弹出cmd窗口并执行后续指令。&和&&表示连接作用,说明有多行指令合为一行。(1)gcc -o &$(CURRENT_DIRECTORY)\$(NAME_PART).exe& &$(FULL_CURRENT_PATH)& 编译生成.exe文件,输出源文件所在目录。注意这里需要有引号,目的是为了在目录及文件名存在空格的情况下也能够正常运行。(2)&& CLS 清屏。&&的意义在于,前面的语句出现错误,将不会执行该句。(3)&& &$(CURRENT_DIRECTORY)\$(NAME_PART).exe& 运行刚刚生成的.exe文件。如果先前的编译错误,将不会运行。(4)& PAUSE 暂停,提示”按任意键继续“。这里无论前面有否错误,都将执行。因此我们看到的是编译错误,显示错误信息并暂停的窗口。(5)& EXIT 退出。编译失败: 6.综合解释(1) GCC for Windows通常使用两个版本,MinGW和Cygwin。文中的TDM-GCC是MinGW的一个版本。通用版MinGW和Cygwin不易安装,使用TDM-GCC或者Dev-Cpp自带的MinGW编译器会使得配置相对简单。(2) gcc [附加选项] -o &输出文件& &源文件1& [&源文件2(可多个)&]是gcc命令行的标准模式。如gcc -std=c99 -O2 -s -o &$(CURRENT_DIRECTORY)\$(NAME_PART).exe& &$(FULL_CURRENT_PATH)&意思就是以C99模式(-std=c99),尽可能多地优化(-O2),最小尺寸(-s)来编译。同样地,C++也可以使用类似的命令行来编译。将gcc换为g++即可(注意-std=c99不可出现在C++中,另外文件的扩展名需注意更改为.cpp,.cc,.cxx,.C等)头文件(.h)直接在源文件中书写如#include &system.h&即可,将自动查找源文件所在目录来获取.h文件。当然也可以使用-I &include目录&命令来添加非标准库。如此将不一一赘述。
可以使用其他编译器来编译,如VC自带的编译器。配置编译器需注意环境变量是否准确。编译器需注意操作系统平台的兼容性。x64是64位系统,x86是32位系统。
哪里可以购买 iPhone8?哪里价格又是最低?
关注公众号回复“苹果”,获取购买详情。
微信上搜索“南窗数码”,或扫描下方的二维码
“编译源目录”相关经验
编译源目录最新经验温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
.a静态库 (archive).C.c.cc.cp.cpp.cxx.c++C++源代码(需要编译预处理).hC或者C++源代码头文件.iiC++源代码(不需编译预处理).o对象文件.s汇编语言代码.so动态库&none&标准C++系统头文件&&& 单个源文件生成可执行程序&&& 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码:&&& 点击(此处)折叠或打开&&& /* helloworld.cpp */&&& #include &iostream&&&& int main(int argc,char *argv[])&&& {&&& std::cout 《 "hello, world"《 std::&&& return(0);&&& }&&& 程序使用定义在头文件 iostream 中的 cout,向标准输出写入一个简单的字符串。该代码可用以下命令编译为可执行文件:&&& $ g++ helloworld.cpp&&& 编译器 g++ 通过检查命令行中指定的文件的后缀名可识别其为 C++ 源代码文件。编译器默认的动作:编译源代码文件生成对象文件(object file),链接对象文件和 libstdc++ 库中的函数得到可执行程序。然后删除对象文件。由于命令行中未指定可执行程序的文件名,编译器采用默认的 a.out。程序可以这样来运行:&&& $ ./a.out hello, world&&& 更普遍的做法是通过 -o 选项指定可执行程序的文件名。下面的命令将产生名为 helloworld 的可执行文件:&&& $ g++ helloworld.cpp -o helloworld&&& 在命令行中输入程序名可使之运行:&&& $ ./helloworld hello, world&&& 程序 g++ 是将 gcc 默认语言设为 C++ 的一个特殊的版本,链接时它自动使用 C++ 标准库而不用 C 标准库。通过遵循源码的命名规范并指定对应库的名字,用 gcc 来编译链接 C++ 程序是可行的,如下例所示:&&& $ gcc helloworld.cpp -lstdc++ -o helloworld&&& 选项 -l (ell) 通过添加前缀 lib 和后缀 .a 将跟随它的名字变换为库的名字 libstdc++.a。而后它在标准库路径中查找该库。gcc 的编译过程和输出文件与 g++ 是完全相同的。&&& 在大多数系统中,GCC 安装时会安装一名为 c++ 的程序。如果被安装,它和 g++ 是等同,如下例所示,用法也一致:&&& $ c++ helloworld.cpp -o helloworld []多个源文件生成可执行程序&&& 如果多于一个的源码文件在 g++ 命令中指定,它们都将被编译并被链接成一个单一的可执行文件。下面是一个名为 speak.h 的头文件;它包含一个仅含有一个函数的类的定义:&&& 点击(此处)折叠或打开&&& /* speak.h */&&& #include &iostream&&&& class Speak {&&& public: void sayHello(const char *);&&& };&&& 下面列出的是文件 speak.cpp 的内容:包含 sayHello() 函数的函数体:&&& 点击(此处)折叠或打开&&& /* speak.cpp */&&& #include "speak.h"&&& void Speak::sayHello(const char *str)&&& {&&& std::cout 《 "Hello " 《 str 《 "\n";&&& }&&& 文件 hellospeak.cpp 内是一个使用 Speak 类的程序:&&& 点击(此处)折叠或打开&&& /* hellospeak.cpp */&&& #include "speak.h"&&& int main(int argc,char *argv[])&&& {&&& S&&& speak.sayHello("world");&&& return(0);&&& }&&& 下面这条命令将上述两个源码文件编译链接成一个单一的可执行程序:&&& $ g++ hellospeak.cpp speak.cpp -o hellospeak&&& PS:这里说一下为什么在命令中没有提到“speak.h“该文件(原因是:在“speak.cpp“中包含有”#include"speak.h"“这句代码,它的意思是搜索系统头文件目录之前将先在当前目录中搜索文件“speak.h“。而”speak.h“正在该目录中,不用再在命令中指定了)。&&& [编辑]源文件生成对象文件&&& 选项 -c 用来告诉编译器编译源代码但不要执行链接,输出结果为对象文件。文件默认名与源码文件名相同,只是将其后缀变为 .o。例如,下面的命令将编译源码文件 hellospeak.cpp 并生成对象文件 hellospeak.o:&&& $ g++ -c hellospeak.cpp&&& 命令 g++ 也能识别 .o 文件并将其作为输入文件传递给链接器。下列命令将编译源码文件为对象文件并将其链接成单一的可执行程序:&&& $ g++ -c hellospeak.cpp&&& $ g++ -c speak.cpp&&& $ g++ hellospeak.o speak.o -o hellospeak&&& 选项 -o 不仅仅能用来命名可执行文件。它也用来命名编译器输出的其他文件。例如:除了中间的对象文件有不同的名字外,下列命令生将生成和上面完全相同的可执行文件:&&& $ g++ -c hellospeak.cpp -o hspk1.o&&& $ g++ -c speak.cpp -o hspk2.o&&& $ g++ hspk1.o hspk2.o -o hellospeak [编辑]编译预处理&&& 选项 -E 使 g++ 将源代码用编译预处理器处理后不再执行其他动作。下面的命令预处理源码文件 helloworld.cpp 并将结果显示在标准输出中:&&& $ g++ -E helloworld.cpp本文前面所列出的 helloworld.cpp 的源代码,仅仅有六行,而且该程序除了显示一行文字外什么都不做,但是,预处理后的版本将超过 1200 行。这主要是因为头文件 iostream 被包含进来,而且它又包含了其他的头文件,除此之外,还有若干个处理输入和输出的类的定义。&&& 预处理过的文件的 GCC 后缀为 .ii,它可以通过 -o 选项来生成,例如:&&& $ gcc -E helloworld.cpp -o helloworld.ii [编辑]生成汇编代码&&& 选项 -S 指示编译器将程序编译成汇编语言,输出汇编语言代码而後结束。下面的命令将由 C++ 源码文件生成汇编语言文件 helloworld.s:&&& $ g++ -S helloworld.cpp&&& 生成的汇编语言依赖于编译器的目标平台。&&& [编辑]创建静态库&&& 静态库是编译器生成的一系列对象文件的集合。链接一个程序时用库中的对象文件还是目录中的对象文件都是一样的。库中的成员包括普通函数,类定义,类的对象实例等等。静态库的另一个名字叫归档文件(archive),管理这种归档文件的工具叫 ar 。&&& 在下面的例子中,我们先创建两个对象模块,然后用其生成静态库。&&& 头文件 say.h 包含函数 sayHello() 的原型和类 Say 的定义:&&& 点击(此处)折叠或打开&&& /* say.h */&&& #include &iostream&&&& void sayhello(void);&&& class Say&&& {&&& private: char *&&& public: Say(char *str)&&& {&&& string =&&& }&&& void sayThis(const char *str)&&& {&&& std::cout 《 str 《 " from a static library\n";&&& }&&& void sayString(void);&&& };&&& 下面是文件 say.cpp 是我们要加入到静态库中的两个对象文件之一的源码。它包含 Say 类中 sayString() 函数的定义体;类 Say 的一个实例 librarysay 的声明也包含在内:&&& 点击(此处)折叠或打开&&& /* say.cpp */&&& #include "say.h"&&& void Say::sayString()&&& {&&& std::cout 《 string 《 "\n";&&& }&&& Say librarysay("Library instance of Say");&&& 源码文件 sayhello.cpp 是我们要加入到静态库中的第二个对象文件的源码。它包含函数 sayhello() 的定义:&&& 点击(此处)折叠或打开&&& /* sayhello.cpp */&&& #include "say.h"&&& void sayhello()&&& {&&& std::cout 《 "hello from a static library\n";&&& }&&& 下面的命令序列将源码文件编译成对象文件,命令 ar 将其存进库中:$ g++ -c sayhello.cpp $ g++ -c say.cpp $ ar -r libsay.a sayhello.o say.o&&& 程序 ar 配合参数 -r 创建一个新库 libsay.a 并将命令行中列出的对象文件插入。采用这种方法,如果库不存在的话,参数 -r 将创建一个新的库,而如果库存在的话,将用新的模块替换原来的模块。&&& 下面是主程序 saymain.cpp,它调用库 libsay.a 中的代码:&&& 点击(此处)折叠或打开&&& /* saymain.cpp */&&& #include "say.h"&&& int main(int argc,char *argv[])&&& {&&& extern S&&& Say localsay = Say("Local instance of Say");&&& sayhello(); librarysay.sayThis("howdy");&&& librarysay.sayString();&&& localsay.sayString();&&& return(0);&&& }&&& 该程序可以下面的命令来编译和链接:&&& $ g++ saymain.cpp libsay.a -o saymain&&& 程序运行时,产生以下输出:&&& hello from a static library howdy from a static library Library instance of Say Local instance of Say&&& C与C++混合编程&&& C++ 是在 C 语言的基础上发展起来的。在某种程度上,我们可将 C++ 看做 C 的一种扩展。在本质上,二者的数据类型和函数调用惯例都是一致的,因此 C 与 C++ 混合编译也是很自然的事情。&&& 二者的区别仅在于编译后函数的名字不同──C 简单地使用函数名而不考虑参数的个数或类型,而 C++ 编译后的函数名则总是将参数类型列表作为其一部分。尽管如此,C++ 提供了特殊的机制来声明 C 函数,这意味着一个 C++ 程序可以直接声明和调用 C 函数。&&& [编辑]C++调用C函数&&& 下面是 C++ 程序调用 C 函数 csayhello() 的一个例子。由于该函数在 C++ 程序内声明时使用了 extern "C",故调用可以直接进行:&&& 点击(此处)折叠或打开&&& /* cpp2c.cpp */&&& #include &iostream&&&& extern "C" void csayhello(char *str);&&& int main(int argc,char *argv[])&&& {&&& csayhello("Hello from cpp to c");&&& return(0);&&& }&&& C 函数不需任何特殊处理,其代码如下:&&& 点击(此处)折叠或打开&&& /* csayhello.c */&&& #include &stdio.h&&&& void csayhello(char *str)&&& {&&& printf("%s\n",str);&&& }&&& 下面三条命令编译以上两个文件并将二者链接为一个可执行文件。由于 gcc 和 g++ 的灵活性使得存在很多方法来完成该任务,但这三条命令或许是最常用的:&&& $ g++ -c cpp2c.cpp -o cpp2c.o&&& $ gcc -c csayhello.c -o csayhello.o&&& $ gcc cpp2c.o csayhello.o -lstdc++ -o cpp2c&&& 注意到,在最后链接的时候指定 C++ 标准库是必须的,这是因为我们用的是 gcc 而不是 g++ 调用的链接器。如果使用的是 g++ 的话,C++ 标准库默认会被链接。&&& 最普遍的做法是,将函数声明放到头文件中,然后将所有内容包含在 extern "C" 声明块内。文件内容像下面所示:&&& 点击(此处)折叠或打开&&& extern "C" {&&& int mlimitav(int lowend, int highend);&&& void updatedesc(char *newdesc);&&& double getpct(char *name);&&& };&&& [编辑]C调用C++函数&&& 要使 C 程序能够调用 C++ 中函数的话,C++ 提供一个符合 C 调用惯例的函数是必须的。下面的例子演示了在 C++ 内创建 C 函数的语法:&&& 点击(此处)折叠或打开&&& /* cppsayhello.cpp */&&& #include &iostream&&&& extern "C" void cppsayhello(char *str);&&& void cppsayhello(char *str)&&& {&&& std::cout 《 str 《 "\n";&&& }&&& 尽管函数 cppsayhello() 通过 extern "C" 声明为 C 函数,事实上它是 C++ 源代码的一部分,这意味着函数体内是真正的 C++ 代码。在函数内你可以自由地创建和析构对象。如果你要在 cppsayhello() 内调用 C 函数的话,将其声明为 extern "C" 是必须的。否则,编译器会将作为一个 C++ 函数并相应地更改函数名。&&& 下面是调用 C++ 函数 cppsayhello() 的 C 程序:&&& 点击(此处)折叠或打开&&& /* c2cpp.c */&&& int main(int argc,char *argv[]) {&&& cppsayhello("Hello from C to C++");&&& return(0);&&& }&&& 下面的命令编译并链接生成c2cpp:&&& $ g++ -c cppsayhello.cpp -o cppsayhello.o&&& $ gcc -c c2cpp.c -o c2cpp.o&&& $ gcc cppsayhello.o c2cpp.o -lstdc++ -o c2cpp&&& (function(w, d, g, J) { var e = J.stringify || J. d[g] = d[g] || {}; d[g]['showValidImages'] = d[g]['showValidImages'] || function() { w.postMessage(e({'msg': {'g': g, 'm':'s'}}), location.href); } })(window, document, '__huaban', JSON);
阅读(941)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'gcc/g++编译C/C++ 和C混合C++',
blogAbstract:'refs: ',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 gcc编译 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信