闲言
用Java语言用久了已经习惯了“Java思维”,不禁想起网上流行的一句话“如果你手里有一把锤子,所有东西看上去都像钉子”......
最近用Java Swing写了个工具,打包成exe做些简单的密码运算,东西做完了测试效果还可以;在公司实际用的时候发现点退出的时候会提示程序崩溃。开始以为代码有缺陷,windows程序dump也看不懂,查了半天也没结果,很无语。
前两天用IDEA,关闭的时候居然也崩溃了,经过总结对比,终于发现罪魁祸首是google拼音输入法(近期安装的最新版本),windows原生的exe却没事儿。于是有了重拾C的想法。
以前也在别人的代码基础上修修补补鼓捣点东西,但是C的运行原理和Java差别太大,以至于去问做C的人怎么把COM像静态库一样打包到exe里面,闹出了笑话。
买了本《程序员的自我修养》,在网上补了下,开始C语言的入门之旅。
看这篇博文的人想必都在学校里入门过C了,所以这里没有数组指针结构体,直接面向平台编程。
正言
一段代码要变成Linux(Windows也一样)下ELF格式的可运行文件,要经过以下步骤:
1、预处理
gcc -E test.c -o test.i 或 gcc -E test.c
2、编译
gcc -S test.i -o test.s
3、汇编
gcc -c test.s -o test.o
4、链接
gcc test.o -o test
每一步生成的结果都有对应工具可以查看,暂且不论,因为我们的首要目标是实用,所以离不开头文件和库,包括动态库和静态库。
这里是一个“五脏俱全”包含五个文件的HelloWorld,五个文件分别是。
join.c
#include <string.h> /* *join two string together */ char *join(char *dst, char *src){ char* fullName = (char*)malloc(strlen(dst) + strlen(src)); strcpy(fullName, dst); strcat(fullName, src); return fullName; }
hello.c
#include <stdio.h> #include <stdlib.h> #include <string.h> char* join(char* dst, char* src); void hello(char* name, char* familyName){ char* who = join(name, familyName); printf("Hi i am: %s.\n", name); free(who); }
hello.h
#include <stdio.h> #include <stdlib.h> void hello(char* name, char* family_name);
main.c
#include "hello.h" int main(){ char full_name[50] = "Jack boy"; hello(full_name, "Gates"); }
这里把join.c编译为一个静态库(动态库后面会有)main.c通过hello.h引用hello.c。
编译步骤如下:
第一步把join.c编译成目标文件:
gcc -c join.c -o join.o
第二步把目标文件打包成静态库
相关推荐
C语言入门实践:美凯C语言实践
Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 ...
这份“C语言入门PDF高清晰版”是一份专门为编程新手准备的学习资料。它通常包含以下几个部分: 1. **C语言简介**:介绍C语言的历史、特点和用途,让读者对C语言有一个初步的认识,理解其在软件开发中的地位。 2. *...
单片机Keil C语言入门是学习嵌入式系统开发的重要步骤,C语言因其高效、灵活的特点成为单片机编程的首选语言。本教程旨在帮助初学者掌握如何使用Keil集成开发环境(IDE)和C语言进行单片机程序设计。 C语言在单片机...
51单片机是微控制器领域中非常经典的一款型号,由Intel公司开发,因其8051内核而得名。...总之,"51单片机C语言入门简单30例"是一个很好的起点,为那些想进入嵌入式领域的学习者提供了宝贵的实践机会。
《C语言入门经典 第4版》是学习C语言的经典教材之一,由美国的霍顿(Deitel & Deitel)和杨浩共同编写。这本书以其深入浅出的方式,为初学者提供了全面而系统的C语言知识。在学习过程中,解决课后习题是巩固知识、...
《C语言入门经典(第4版) 源代码及课后练习答案》是一本针对初学者的C语言教程,提供了全面的编程实例和详尽的课后习题解答,帮助读者深入理解和掌握C语言的基本概念与编程技巧。这份资源包含两大部分:书中的源代码...
《C语言从入门到精通》中可能提供了丰富的例程和习题,鼓励读者动手实践,提高编程能力。 最后,书中附带的资源,如"本软件下载说明.htm"和"本软件使用说明.txt"可能是为了辅助读者安装和使用配套的C语言学习软件,...
“C语言入门教程及100例”这个资源为初学者提供了一个良好的学习平台,通过系统学习和大量实践,相信你可以快速掌握C语言,开启编程之旅。在学习过程中,遇到困难不要气馁,多思考、多动手,你会发现编程其实并不难...
"C语言入门"这个压缩包文件显然是为了帮助初学者踏入C语言的世界。 在压缩包中,我们可以看到以下三个文件: 1. **C语言入门.pdf** - 这很可能是一本详细的C语言教程,涵盖了C语言的基础概念、语法和编程技巧。...
【标题】"很好的c语言入门20道题"所涵盖的知识点主要集中在C语言的基础语法、控制结构、数据类型以及函数应用等方面。这20道题目是初学者掌握C语言编程基础的重要实践,通过这些题目,可以深入理解C语言的核心概念。...
单片机C语言入门是电子工程领域中一个重要的学习主题,尤其对于初学者而言,它提供了从基础到实践的桥梁。《单片机C语言入门》这本书由人民邮电出版社出版,旨在帮助读者掌握单片机编程的基础知识,并通过C语言实现...
通过这个"C语言入门代码集锦",学习者不仅能够理解C语言的基本概念,还能通过实践提升编程技能。同时,VC6.0作为一款经典的C/C++集成开发环境,虽然年代较为久远,但其界面友好,调试功能强大,对于初学者学习C语言...
在C语言的世界里,入门...总的来说,"c语言入门小程序"是一个很好的学习资源,它提供了一个实战平台,让你在实践中学习和巩固C语言的知识。记住,编程的学习需要不断练习,通过这些小程序,你将一步步踏入编程的大门。
本资源"**C语言入门学习_上机100题**"是为初学者设计的一套完整的C语言上机练习题集,旨在帮助初学者通过实践来巩固和深化对C语言的理解。 一、C语言基础概念 C语言的基础包括变量、数据类型、运算符和表达式。在...
### C语言入门很简单 在IT领域,特别是编程技术的学习与应用中,...“C语言入门很简单”并非空话,而是建立在扎实基础知识和不断实践之上的真理。希望每位初学者都能够从本文中获得启发,顺利踏上C语言的学习之旅。
### C语言基础知识概览 #### 一、C语言简介 C语言是一种通用的程序设计语言,因其高效性和灵活性而被广泛应用于系统编程、...通过实践,不断练习编写C语言程序,将理论知识与实践相结合,可以更深入地掌握这门语言。
"C语言开发入门与编程实践"这个资料包正是为那些希望踏入C语言殿堂的新手们准备的。它包含了丰富的学习资源和经过测试的代码示例,旨在帮助初学者快速理解C语言的基础概念并进行实际操作。 首先,让我们深入探讨...
本教程“C语言入门”旨在为初学者提供一套系统的C语言学习资源,帮助他们快速掌握编程基础。 在C语言中,程序的基本单位是函数,它允许模块化编程,提高了代码的可读性和重用性。C语言有预处理、编译、汇编和链接四...
总的来说,《51单片机及C语言入门教程》涵盖了从理论到实践的全面内容,是学习51单片机和C语言编程的理想资源。无论你是电子工程专业的学生,还是对嵌入式系统感兴趣的爱好者,都能通过这份教程快速入门,为进一步的...