gcc编译问题 (gcc编译的四个步骤)
本文目录导航:
gcc编译问题
-c和-o都是gcc编译器的可选参数-c表示只编译(compile)源文件但不链接,会把.c或的c源程序编译成目标文件,一般是.o文件。
-o用于指定输出(out)文件名。
不用-o的话,一般会在当前文件夹下生成默认的文件作为可执行程序。
例如gcc -c test.c将生成test.o的目标文件gcc -o app test.c将生成可执行程序appgcc -c a.c -o a.o表示把源文件a.c编译成指定文件名a.o的中间目标文件(其实在这里,你把-o a.o省掉,效果是一样的,因为中间文件默认与源文件同名,只是后缀变化)。

如何开始使用适用于 Windows 的 Metal Developer Tools
随着macOS Sonoma的发布,Apple还更新了当前版本的Metal开发人员工具,以便在Windows中使用。
以下是获取和使用它们的方法。
Metal 是 Apple 的?macOS?图形框架。
Metal 允许您使用 Apple 针对所有 Apple 设备优化的图形引擎创建丰富、高性能的 2D 和 3D 图形。
当 Metal 在 Apple 设备上运行时,您还可以使用 Microsoft Windows 作为平台来创建用于 Metal 的资源、图像、着色器和纹理。
Apple在其开发人员工具网站上有两个Metal for Windows下载:Metal Developer Tools 4.0 for Windows和Metal Shader Converter for Windows。
您可以通过在线登录您的Apple开发人员帐户来下载两者。
获取工具要下载适用于 Windows 的 Metal 开发人员工具,请登录您的 Apple 开发人员帐户,转到 Web 浏览器中的“下载”页面,然后向下滚动到?Windows 版 Metal 开发人员工具:单击“显示详细信息”箭头,然后单击 Metal Developer Tools 4.0 和?Metal Developer Tools 4.0 将它们下载到计算机的存储中。
接下来,向下滚动到适用于 Windows 的金属着色器转换器并单击?显示详细信息?箭头,然后单击 适用于 Windows 的金属着色器转换器 和 适用于 Windows 的金属着色器转换器将它们下载到您的计算机存储中:下载适用于Windows的金属着色器转换器。
安装将所有下载的项目移动到新文件夹中。
您现在应该有四个项目。
在安装之前,您可能需要通读这两个 PDF 文件:下载的视窗工具。
接下来,如果您在?Mac?上下载了文件,请插入兼容 Windows 的 USB 拇指驱动器或其他磁盘,然后将四个项目复制到其中。
你将使用拇指驱动器将文件复制到 Windows 10 或 11 计算机。
复制完成后,将 USB 驱动器插入 Windows 计算机并将四个文件复制过来。
运行这两个安装程序文件以在 Windows 计算机上安装这些工具。
正如 Metal Developer Tools for Windows PDF 所述:“默认情况下,软件包将安装到 .安装时,您会发现:%PROGRAMFILES%\Metal Developer Toolsbin包含纹理转换器工具。
include包含 AppleTextureConverter 库的标头。
lib包含 AppleTextureConverter 库。
metal\ios包含面向?iOS?和?tvOS?时要使用的工具集。
包含面向 macOS 时要使用的工具集。
metal\macosMetal 开发人员工具应与您计划针对您的版本的操作系统 SDK 版本相匹配。
它还指出,除了 GUI 安装之外,安装程序还可以支持命令行安装,如下所示:Metal Developer /S /D=C:\Users\My Name\Sandbox\Tools使用工具安装后,您可以使用这些工具将 Windows 计算机上的着色器和资产转换为 Metal 使用的格式。
第一个工具,将Windows创建的纹理转换为Metal接受的GPU压缩纹理格式。
要查看 的详细信息和运行选项,请键入 --h进入 Windows 中的命令提示符,然后按?Return?或?Enter?键。
如开发人员说明所示,要合并到您自己的 Windows 纹理工具中,请使用提供的 AppleTextureConverter 库,并阅读头文件以获取更多信息。
TextureConverterAppleTextureConverter.h还包括一些工具,用于使用 Apple Metal 着色语言将图形和计算着色器从 Windows 编译到 Metal Library 对象中。
Windows 工具没有提供有关如何执行此操作的说明,因此您需要阅读 Apple 在线 Metal 文档的文档金属区域的着色器库部分中的着色器库部分中的通过预编译源文件构建着色器库。
实际上,您将使用这些工具从Windows DXIL格式转到中间格式,然后转到可以加载到Xcode中并在运行时从应用程序运行的和文件。
从文档中:“金属编译器工具将每个着色器源文件转换为中间表示文件。
然后,metallib 和 metal-ar 工具将中间表示文件分别编译为库和二进制存档”。
如文档所述,适用于Windows的Metal命令行工具使用与macOS对应工具相同的选项和参数。
金属着色器转换器安装的另一个Windows工具是Windows的Metal Shader Converter。
该工具将LLVM IR字节码形式的中间表示转换为适合加载到Metal中的字节码。
LLVM是Xcode在项目编译过程中使用的开源编译器基础设施。
您可以在该站点的位码页面上阅读有关LLVM的更多信息??和字节码格式(LLVM称之为“位码”)。
字节码格式也包含在PACKT?Publishing的LLVM Cookbook一书中。
金属着色器转换器既是独立工具,也是库,您可以根据需要将其合并到自己的工具中。
另请参阅提供的头文件 。
metal_irconverter_runtime.h适用于 Windows 的 Metal Shader Converter 需要 Microsoft Windows 10 或更高版本,以及 Microsoft Visual Studio 2019 或更高版本。
使用 Metal Shader Converter for Windows 构建的库仅适用于 macOS 14 Sonoma 和?iOS 17。
如果它们是为早期操作系统版本构建的,则某些功能可能不可用。
运行金属着色器转换器Windows Metal Shader Converter 的第一个也是最简单的用途是将 Windows DirectX DXIL(DirectX Intermediate Language)着色器转换为 Metal 着色器库。
这可以使用命令行工具完成。
metal-shaderconverter例如:metal-shaderconverter -o ./您可以通过在命令提示符下运行来获取有关 Windows 的详细信息。
metal-shaderconvertermetal-shaderconverter --help金属着色器转换器库还有一个动态代码库(dylib),它适用于C,C++,Objective-C和Swift项目,允许您使用提供的类将DXIL转换为Metal。
libmetalirconverterIRCompiler这种转换代码相当简单,金属着色器转换器 PDF 中提供了小于一页的示例代码。
实质上,要使用提供的类,首先创建对象的实例,设置入口点名称,使用该类将 DXIL 对象转换为 IR 对象,使用该函数将其编译为 Metal,然后检查输出。
IRCompilerIRObjectIRCompilerAllocCompileAndLink()提供的?IRMetalLibBinary 类允许您加载和操作编译的 Metal 对象。
相当长的三十页 Windows PDF 的 Metal Shader 编译器提供了许多其他选项,可用于从 Windows 转换为 Apple Metal,包括顶点属性、采样器状态对象、参数缓冲区、光线追踪等。
还有关于实现最佳金属性能的技巧,以及处理复杂着色器管线(包括几何体和曲面细分)的技巧。
该 PDF 还建议查看 Metal 示例代码页面上的 Apple 的 Metal?示例代码项目“C++学习 Metal”。
其他资源如果你不知道C++,你会想先从一本关于C的简单经典书籍开始,比如Brian Kernighan和已故的Dennis Ritchie的权威C书The C Programming Language,他们都在1970年代在贝尔实验室编写了C语言,以创建UNIX操作系统。
C++由Bjarne Stroustrup创建,基于C,但提供面向对象(OOP)功能,如类,对象,标准模板库(STL)和其他现代功能。
Stroustrup的文本The C++ Programming Language 4th Edition是必读的。
Stroustrup还有一个网站,还有一些有用的C++书籍和教程。
一年一度的C++会议,CppCon每年1月举行今年6月日至日在科罗拉多州奥罗拉举行,CppCon还有一个YouTube频道,里面有很多很棒的C++教程。
C++在1994年开始流行,当时基于过程的语言(如C)的局限性变得明显。
C 语言有几种标准,包括 C99、C11、C14、C17 和 C22。
APRESS有一些关于每个标准的好书。
您可以在 Xcode 的构建设置面板中设置 Xcode 编译器使用哪些标准。
1989年,NeXT团队在NeXT Computer创建了Objective-C,这是一种基于C的类似OOP语言,但它具有其他优点,例如动态链接和对象内省。
当苹果在1997年收购NeXT时,它还收购了包括Objective-C在内的所有NeXT技术。
一本关于Objective-C的权威书籍是Big Nerd Ranch的Objective-C编程:The Big Nerd Ranch Guide。
还值得注意的是,一些第三方3D标准也有一些要求,其中许多是基于Windows DirectX / Direct3D DXIL标准的。
例如,Steam具有必须满足的某些DirectX要求因此,如果您要同时发布到Steam和Apple平台,则需要了解这些要求。
Steam 有一个页面详细介绍了要求。
Microsoft在GitHub上托管DirectXShaderCompiler存储库和Wiki。
Microsoft在GitHub上的DirectX-Specs和DirectXTK6存储库中还有一个DirectX-Specs页面和DirectX Shader Model 12。
Windows DXIL调试和调整PIX工具也可用。
Microsoft还有一个DirectX开发人员博客。
最后,NVIDIA有一个基于Windows的DirectX调试工具,称为Nsight Graphics,如果你愿意面对相当复杂的文档。
苹果在macOS Sonoma中添加了Windows Metal工具,这意味着现在可以更轻松地将现有的游戏图形管道移植到Metal,以便它们可以在Apple平台上以最佳方式运行。
随着时间的推移,我们可以期待苹果改进其Metal工具,使跨平台游戏开发变得不那么痛苦。
邮编的正则表达式
代码如下:
package TestRegex;
public class Test01 {
* 邮政编码正则:^[1-9]\\d{5}$
* ^:正则开始符
* $:正则结束符
* [1-9]:范围为1-9
* \:转移字符
* \d:数字【0-9】
* X{n}:恰好n次:注意从0开始
public static void main(String[] args) {
//定义正则
String str= ^[1-9]\\d{5}$;
//正确的邮件编码
//错误邮政编码
String s2 =;
* Pattern为模式类型,
* compile(正则)方法预编译正则,
* 得到一个Matcher对象
Pattern p =(str);
//Pattern中的matcher()方法传入要匹配的字符串与正则进行匹配i
Matcher m=(s);
Matcher m2=(s2);
//Matcher类中的matches()方法判断是否匹配成功
boolean bo= ();
boolean bo2= ();
//输出匹配结果:true为成功,false为失败
扩展资料
正则表达式简单语法及常用正则表达式:
基本符号:
^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)
$ 表示匹配字符串的结束位置
* 表示匹配 零次到多次
+ 表示匹配 一次到多次 (至少有一次)
? 表示匹配零次或一次
. 表示匹配单个字符
| 表示为或者,两项中取一项
( ) 小括号表示匹配括号中全部字符
[ ] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]
{ } 大括号用于限定匹配次数 如 {n}表示匹配n个字符 {n,}表示至少匹配n个字符 {n,m}表示至少n,最多m
\ 转义字符 如上基本符号匹配都需要转义字符如 \* 表示匹配*号
\w 表示英文字母和数字 \W 非字母和数字
\d 表示数字\D 非数字
常用的正则表达式:
匹配中文字符的正则表达式:[\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s|]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g//
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*