通过简单造学命令行.
windows版和linux版的makefile(见下).
两者的不同在于o–>obj.so==>lib. 然后要链接的静态库地址变了.
不然盲目的造不了.必须先将o->obj.ldc2在windows下不能直接连o文件.
nmake和dmake最后都失败了
.
nmake说什么符不对,符不对.改了半天都是符不对.然后还不能识别$^.dmake也是,不认识$^
最后,我自己写了个简单的造
,不就是命令吗?自己造就造好了.
心得:别人的都是折腾,自己的才是暖心的
ldc的命令像这样:ldc2 -c -O2 $^ -of $@
.$^
为源.$@
为目标文件.
或者这样:ldc2 $^ -of $@ 直接加上的库地址
.
这样:ldc2 -d-version=algorithm -O2 $^ -of $@
,加上版本.
或ldc2 -d-version=loop -O2 $^ -of $@
.
rust的编译这样:
rustc --cfg algorithm -C opt-level=2 --crate-type=lib --emit=obj rs.rs -o $@
或这样rustc --cfg _loop -C opt-level=2 --crate-type=lib --emit=obj rs.rs -o $@
.
看见没有.rust的编译,双杠--
后面不是空格就是等号,要配置的.
clang的编译这样:
clang++ -DALGORITHM=1 -c -O2 -o $@ $^
这样clang++ -DLOOP=1 -c -O2 -o $@ $^
这样clang -c -O2 -o $@ $^
.
最后得到的居然是都是614kb大小的可执行文件.真神奇!哦,主要是其他各种语言只一个函数不同.
还用了xmake
.但未编译过.因为不知道如何用.只会敲命令.有空得去看看.如何自定义xmake
.
原来一直怕makefile
,现在折腾了一下,再也不怕了.至于其宏定义,太麻烦.不折腾.
linux下:
all: c d-loop d-algorithm cpp-loop cpp-algorithm rs-loop rs-algorithm
c: c.o bench.o
ldc2 $^ -of $@
c.o: c.c
clang -c -O2 -o $@ $^
cpp-loop: cpp-loop.o bench.o
ldc2 $^ -of $@
cpp-loop.o: cpp.cpp
clang++ -DLOOP=1 -c -O2 -o $@ $^
cpp-algorithm: cpp-algorithm.o bench.o
ldc2 $^ -of $@
cpp-algorithm.o: cpp.cpp
clang++ -DALGORITHM=1 -c -O2 -o $@ $^
d-loop: d.d bench.o
ldc2 -d-version=loop -O2 $^ -of $@
d-algorithm: d.d bench.o
ldc2 -d-version=algorithm -O2 $^ -of $@
rs-loop: rs-loop.o bench.o
ldc2 $^ -of $@ ~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/libstd-44988553032616b2.so
rs-loop.o: rs.rs Makefile
rustc --cfg _loop -C opt-level=2 --crate-type=lib --emit=obj rs.rs -o $@
rs-algorithm: rs-algorithm.o bench.o
ldc2 $^ -of $@ ~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/libstd-44988553032616b2.so
rs-algorithm.o: rs.rs Makefile
rustc --cfg algorithm -C opt-level=2 --crate-type=lib --emit=obj rs.rs -o $@
bench.o: bench.d
ldc2 -c -O2 $^ -of $@
这是windows版:
all: c d-loop d-algorithm cpp-loop cpp-algorithm rs-loop rs-algorithm
c: c.obj bench.obj
ldc2 $^ -of $@
c.obj: c.c
clang -c -O2 -o $@ $^
cpp-loop: cpp-loop.obj bench.obj
ldc2 $^ -of $@
cpp-loop.obj: cpp.cpp
clang++ -DLOOP=1 -c -O2 -o $@ $^
cpp-algorithm: cpp-algorithm.obj bench.obj
ldc2 $^ -of $@
cpp-algorithm.obj: cpp.cpp
clang++ -DALGORITHM=1 -c -O2 -o $@ $^
d-loop: d.d bench.obj
ldc2 -d-version=loop -O2 $^ -of $@
d-algorithm: d.d bench.obj
ldc2 -d-version=algorithm -O2 $^ -of $@
rs-loop: rs-loop.obj bench.obj
ldc2 $^ -of $@ C:\Users\Administrator\.rustup\toolchains\stable-i686-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib\std-13b8a18bc6c8a939.dll.lib
rs-loop.obj: rs.rs Makefile
rustc --cfg _loop -C opt-level=2 --crate-type=lib --emit=obj rs.rs -o $@
rs-algorithm: rs-algorithm.obj bench.obj
ldc2 $^ -of $@ C:\Users\Administrator\.rustup\toolchains\stable-i686-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib\std-13b8a18bc6c8a939.dll.lib
rs-algorithm.obj: rs.rs Makefile
rustc --cfg algorithm -C opt-level=2 --crate-type=lib --emit=obj rs.rs -o $@
bench.obj: bench.d
ldc2 -c -O2 $^ -of $@
两个文件放在后边.前面太占地方.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现