一文搞懂常见的源码编译安装

P 1、最常见的开源项目是用什么语言开发的
经常登录github、gitee的小伙伴肯定看到过很多开源的项目,但小伙伴对其一头雾水。其实,我们可以从它的首页观察到一些眉目,最主要的就是它是用什么语言开发的。下面就是最火的OpenClaw开发语言描述。

从上图可以看到主要语言是TypeScript,这是一个JavaScript的超集开发语言,同样运行在node平台。到这里,我们就找到了编译它的方向了,都不用看他的readme文档。那我们常用都有哪些呢?最常看到的通常是C、C++、Java、Python、JavaScript(TypeScript和JS同类)五类,这五种语言可以用一句话概括:
- C:直接控制硬件的系统语言
- C++:C的增强版,适合大型项目
- Java:一次编写,到处运行
- JavaScript:网页交互的核心
- Python:简单易学的万能胶水
它们编译方式和性能对比,如下:
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
P 2、开发编译流程
(1)C语言是基础(linux平台为例,windows需要用Visual Studio)
i. 编写源码
// hello.c#include<stdio.h>intmain(){printf("Hello C!\n");return 0;}
ii. 编译运行
# 一步编译gcc hello.c -o hello# 分步编译(理解过程)gcc -c hello.c # 生成hello.o(机器码片段)gcc hello.o -o hello # 链接成完整程序# 运行./hello
iii. 关键理解
- .c文件:你写的源代码
- .o文件:编译后的机器码(未链接)
- 可执行文件:链接后的完整程序
- gcc:GNU编译器套件
(2)C++是面向对象的C
i. 编写源码
// hello.cpp#include<iostream>using namespace std;intmain(){cout << "Hello C++!" << endl;return 0;}
ii. 编译运行
# 使用g++编译器g++ hello.cpp -o hello./hello
iii. 与C的区别
-
使用 g++而不是gcc -
支持类、对象等高级特性 -
编译时检查更严格
(3)Java跨平台老大哥
i. 编写源码
// Hello.javapublic class Hello {publicstaticvoidmain(String[] args) {System.out.println("Hello Java!");}}
ii .编译运行
# 编译成字节码javac Hello.java # 生成 Hello.class# 通过JVM运行java Hello
iii. 打包部署
# 打包成JAR文件jar cvf myapp.jar Hello.class# 运行JAR包java -jar myapp.jar
iv .核心概念
- .java:源代码
- .class:字节码(不是机器码)
- JVM:Java虚拟机,跨平台的关键
- JAR:Java归档文件(类似ZIP)
(4)JavaScript是网页的脚本语言
i .它应该在浏览器中运行
// hello.jsconsole.log("Hello JavaScript!");
<!-- index.html --><scriptsrc="hello.js"></script>
ii. 也可以在Node.js环境运行
# 安装Node.js后node hello.js
iii. TypeScript和开发流程
# TypeScript需要编译成.js文件tsc hello.ts # 生成hello.js# 使用打包工具npm install # 安装依赖npm run build # 构建项目
(5)Python即写即用
i. 直接运行
# hello.pyprint("Hello Python!")
# bashpython hello.py
ii. 打包后运行
# 安装打包工具pip install pyinstaller# 打包pyinstaller --onefile hello.py# 运行(无需Python环境)./dist/hello # Linux/Macdist/hello.exe # Windows
它是数字世界里的一把杀猪刀
却总能巧夺天工
它的世界是纯粹0、1组合
却总能创造无尽幻想
……
本公众号关注数据价值分析、编程学习,将不定期更新社会热点数据分析结果、编程技巧,分享数据分析工具、方法、学习等内容,欢迎有兴趣的小伙伴加入。
夜雨聆风