c++ - bcc32 编译器和 tlink32 链接器选项在 linux 中分别等效于 gcc 和 ld
问题描述
我正在尝试将旧版 Delphi 代码从 Windows 转换为 Linux。Delphi 项目有一些子模块,它们用 C 语言编写并使用 bcc32 编译器编译并使用 tlink32 链接器链接。
作为这些 C 模块的 Linux 转换的一部分,我计划使用 gcc 编译器代替 bcc32,并使用 ld 链接器代替 tlink32。
但是,我发现在 Linux 中找到等效的编译器和链接器标志/选项有点困难。下面是来自 Windows 中现有 C 代码的编译器 (bcc32) 和链接器 (tlink32) 命令。如果有人可以建议 Linux 中 gcc 和 ld 的等效标志,那将是一个很大的帮助。
bcc32 编译器选项:
c:\bc45\bin\bcc32 -a1 -c -d -I..\..\_common\msgups -v- -w-aus -w-par -i50 -Dfar -DNO_SEGMENT_PRAGMA $(.SOURCE)
在这里我找不到对应于-a1
, -d
, -v-
, -w-aus
, -i50
, -Dfar
,的 gcc 编译器标志-DNO_SEGMENT_PRAGMA
tlink32 链接器选项:
c:\bc45\bin\tlink32 -s -n $(OBJ) $(.SOURCE), $@, $*.mup
在这里我找不到对应于-s
和的 ld 编译器标志-n
解决方案
bcc32 标志
基于:使用 Borland 5.5 编译器和命令行工具、 BCC32.EXE、C++ 32 位命令行编译器和编译器错误和警告 (C++) 索引
-aN
= 在 N 个字节上对齐- 因此,
-a1
是 1 字节对齐
- 因此,
-c
= 仅编译,无链接-d
= 合并重复的字符串-I
= 包含文件目录- 因此,
-I..\..\_common\msgups
指向..\..\_common\msgups
文件夹
- 因此,
-v
= 源代码级调试- 因此,
-v-
禁用调试
- 因此,
-wxxx
= 警告控制-iN
= 最大标识符长度- 因此,
-i50
最大标识符长度为 50
- 因此,
-Dxxx
= 定义宏- 因此:
-Dfar
定义far
-DNO_SEGMENT_PRAGMA
定义NO_SEGMENT_PRAGMA
tlink32 标志
基于:LINK.EXE 和 TLINK32.EXE 的命令行选项
-s
= 在 MAP 文件中包含有关段的详细信息。-n
= 没有默认库
推荐阅读
- python - 是否可以在 OpenCV 中将图像粘贴到另一个图像之上?
- authentication - IT 行业参与者使用的身份验证框架?
- python - 将文件重新排列到正确文件夹中的脚本
- html - 为什么我的背景颜色、宽度和高度的 CSS 样式不能在我的最后一个 div >gameover 上工作?
- ios - 使用 Xamarin Forms MediaElement 调用 MainPage OnAppearing() 退出全屏
- php - 两个链接容器之间的连接失败:apache2/php & mysql
- javascript - 使用对象内部的对象对数组进行排序
- javascript - 难以诊断循环 JSON
- arrays - 在由可变结构元素组成的数组中的数据中使用 findmin() - Julia
- c# - 如何快速排序数字对(int和double)