`

C语言入门实践

 
阅读更多

闲言

 

用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

 第二步把目标文件打包成静态库

ar -rsv libjoin.a join.o//如果有多个.o文件,空格分开
 第三步完成链接
gcc -ggdb hello.c main.c -L. -ljoin -o main//为了方便GDB调试,这里加上-ggdb
 这里-L指定静态库位置,-l指定库名;
注意:按照约定,库名不包括lib前缀和后缀名,这里库文件为libjoin.a,引用时为-ljoin。
运行结果如下:
 
  • 大小: 2.9 KB
分享到:
评论

相关推荐

    C语言入门实践:美凯C语言实践.zip

    C语言入门实践:美凯C语言实践

    Objective-C语言入门教程&深入浅出,理论实践相结合.pdf

    Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 ...

    C语言入门PDF高清晰版

    这份“C语言入门PDF高清晰版”是一份专门为编程新手准备的学习资料。它通常包含以下几个部分: 1. **C语言简介**:介绍C语言的历史、特点和用途,让读者对C语言有一个初步的认识,理解其在软件开发中的地位。 2. *...

    单片机Keil C语言入门 c语言的实践

    单片机Keil C语言入门是学习嵌入式系统开发的重要步骤,C语言因其高效、灵活的特点成为单片机编程的首选语言。本教程旨在帮助初学者掌握如何使用Keil集成开发环境(IDE)和C语言进行单片机程序设计。 C语言在单片机...

    51单片机C语言入门简单30例

    51单片机是微控制器领域中非常经典的一款型号,由Intel公司开发,因其8051内核而得名。...总之,"51单片机C语言入门简单30例"是一个很好的起点,为那些想进入嵌入式领域的学习者提供了宝贵的实践机会。

    C语言入门经典 第4版/第四版 (美)霍顿 杨浩 c语言入门经典

    《C语言入门经典 第4版》是学习C语言的经典教材之一,由美国的霍顿(Deitel & Deitel)和杨浩共同编写。这本书以其深入浅出的方式,为初学者提供了全面而系统的C语言知识。在学习过程中,解决课后习题是巩固知识、...

    C语言入门经典(第4版) 源代码及课后练习答案

    《C语言入门经典(第4版) 源代码及课后练习答案》是一本针对初学者的C语言教程,提供了全面的编程实例和详尽的课后习题解答,帮助读者深入理解和掌握C语言的基本概念与编程技巧。这份资源包含两大部分:书中的源代码...

    C语言从入门到精通

    《C语言从入门到精通》中可能提供了丰富的例程和习题,鼓励读者动手实践,提高编程能力。 最后,书中附带的资源,如"本软件下载说明.htm"和"本软件使用说明.txt"可能是为了辅助读者安装和使用配套的C语言学习软件,...

    c语言入门教程及100例

    “C语言入门教程及100例”这个资源为初学者提供了一个良好的学习平台,通过系统学习和大量实践,相信你可以快速掌握C语言,开启编程之旅。在学习过程中,遇到困难不要气馁,多思考、多动手,你会发现编程其实并不难...

    C语言入门.rar

    "C语言入门"这个压缩包文件显然是为了帮助初学者踏入C语言的世界。 在压缩包中,我们可以看到以下三个文件: 1. **C语言入门.pdf** - 这很可能是一本详细的C语言教程,涵盖了C语言的基础概念、语法和编程技巧。...

    很好的c语言入门20道题

    【标题】"很好的c语言入门20道题"所涵盖的知识点主要集中在C语言的基础语法、控制结构、数据类型以及函数应用等方面。这20道题目是初学者掌握C语言编程基础的重要实践,通过这些题目,可以深入理解C语言的核心概念。...

    《单片机C语言入门》 完整代码

    单片机C语言入门是电子工程领域中一个重要的学习主题,尤其对于初学者而言,它提供了从基础到实践的桥梁。《单片机C语言入门》这本书由人民邮电出版社出版,旨在帮助读者掌握单片机编程的基础知识,并通过C语言实现...

    C语言入门代码集锦

    通过这个"C语言入门代码集锦",学习者不仅能够理解C语言的基本概念,还能通过实践提升编程技能。同时,VC6.0作为一款经典的C/C++集成开发环境,虽然年代较为久远,但其界面友好,调试功能强大,对于初学者学习C语言...

    c语言入门小程序

    在C语言的世界里,入门...总的来说,"c语言入门小程序"是一个很好的学习资源,它提供了一个实战平台,让你在实践中学习和巩固C语言的知识。记住,编程的学习需要不断练习,通过这些小程序,你将一步步踏入编程的大门。

    C语言入门学习_上机100题

    本资源"**C语言入门学习_上机100题**"是为初学者设计的一套完整的C语言上机练习题集,旨在帮助初学者通过实践来巩固和深化对C语言的理解。 一、C语言基础概念 C语言的基础包括变量、数据类型、运算符和表达式。在...

    C语言入门很简单

    ### C语言入门很简单 在IT领域,特别是编程技术的学习与应用中,...“C语言入门很简单”并非空话,而是建立在扎实基础知识和不断实践之上的真理。希望每位初学者都能够从本文中获得启发,顺利踏上C语言的学习之旅。

    C语言入门(TXT)

    ### C语言基础知识概览 #### 一、C语言简介 C语言是一种通用的程序设计语言,因其高效性和灵活性而被广泛应用于系统编程、...通过实践,不断练习编写C语言程序,将理论知识与实践相结合,可以更深入地掌握这门语言。

    C语言开发入门与编程实践

    "C语言开发入门与编程实践"这个资料包正是为那些希望踏入C语言殿堂的新手们准备的。它包含了丰富的学习资源和经过测试的代码示例,旨在帮助初学者快速理解C语言的基础概念并进行实际操作。 首先,让我们深入探讨...

    C语言入门教程 PDF

    本教程“C语言入门”旨在为初学者提供一套系统的C语言学习资源,帮助他们快速掌握编程基础。 在C语言中,程序的基本单位是函数,它允许模块化编程,提高了代码的可读性和重用性。C语言有预处理、编译、汇编和链接四...

    51单片机及C语言入门教程

    总的来说,《51单片机及C语言入门教程》涵盖了从理论到实践的全面内容,是学习51单片机和C语言编程的理想资源。无论你是电子工程专业的学生,还是对嵌入式系统感兴趣的爱好者,都能通过这份教程快速入门,为进一步的...

Global site tag (gtag.js) - Google Analytics