汽车上的IG-on 和 ACC 有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汽车上的IG-on 和 ACC 有啥区别?相关的知识,希望对你有一定的参考价值。

1.在汽车挡位上不同:

ACC是附件档,IG-on是汽车点火档。

2.功能使用范围不同:

ACC是在部分车载附属设备供电,如视听系统,仪表灯,灯光等。也就是说,车停在哪里,发动机不转,除了空调不能用外,车内的设备基本都可以用。

IG-on在保证ACC供电的基础上,增加了发动机的点火功能。

3.模式下的工作电器设备不同:

ACC模式下仪表板灯不亮,部分电器设备可以工作。

IG-on 模式下仪表板上的灯亮,所有电器设备可以工作。

注意:发动机不运行时,不要让点火开关停留在“IG-ON”模式,否则蓄电池会耗尽。

扩资资料:

自适应巡航控制 (-ACC),一般应用于较高端的汽车上。由汽车中央控制系统控制,负责记录探测前方是否有汽车,自动保持与前车的距离,可在紧急情况下自动刹车。

一般在车速大于25 km/h时才会起作用,而当车速降低到25 km/h以下时,就需要驾驶者进行人工控制。通过系统软件的升级,自适应巡航控制系统可以实现“停车-起步”功能,以应对在城市中行驶时频繁的停车和起步情况。

这种扩展功能,可以使汽车在非常低的车速时也能与前车保持设定的距离。当前方车辆起步后,自适应巡航控制系统会提醒驾驶者,驾驶者通过踩油门踏板或按下按钮发出信号,车辆就可以起步行驶。

                       

参考技术A 点火开关分为4个档位,分别是off,acc,IG-on,和ST
off全车除了常火(如应急灯,时钟等的记忆功能)外,均不供电。
acc 是附件档,部分车载附属设备供电,如视听系统,仪表灯,灯光等。也就是说,车停在哪里,发动机不转,除了空调不能用外,车内的设备基本都可以用。
IG-on是汽车点火档,在保证ACC供电的基础上,增加了发动机的点火功能。
ST是启动档,主要给发动机启动系统供电,这时一般会切断ACC档的电路,已保证发动机顺利启动。本回答被提问者采纳
参考技术B IG-on 模式下仪表板上的灯亮,所有电器设备可以工作。
ACC模式下仪表板灯不亮,部分电器设备可以工作。
发动机不运行时,不要让点火开关停留在“IG-ON”模式,否则蓄电池会耗尽。

macOS 上的 .so 和 .dylib 有啥区别?

【中文标题】macOS 上的 .so 和 .dylib 有啥区别?【英文标题】:What are the differences between .so and .dylib on macOS?macOS 上的 .so 和 .dylib 有什么区别? 【发布时间】:2011-01-21 07:59:31 【问题描述】:

.dylib 是 macOS 上的动态库扩展,但我一直不清楚我什么时候不能/不应该使用传统的 unix .so 共享对象。

我的一些问题:

在概念层面上,.so 和 .dylib 之间的主要区别是什么? 我什么时候可以/应该使用其中一种? 编译技巧和提示(例如,替换 gcc -shared -fPIC,因为这在 osx 上不起作用)

【问题讨论】:

【参考方案1】:

Mac OS X 用于可执行文件和库的 Mach-O 目标文件格式区分共享库动态加载的模块。使用otool -hv some_file查看some_file的文件类型。

Mach-O 共享库的文件类型为 MH_DYLIB,并带有扩展名 .dylib。它们可以与通常的静态链接器标志链接,例如-lfoo 用于 libfoo.dylib。它们可以通过将-dynamiclib 标志传递给编译器来创建。 (-fPIC 为默认值,无需指定。)

可加载模块在 Mach-O 语言中称为“捆绑包”。它们的文件类型为 MH_BUNDLE。他们可以进行任何扩展;扩展名.bundle 是Apple 推荐的,但大多数移植软件出于兼容性考虑使用.so。通常,您会为扩展应用程序的插件 使用捆绑包;在这种情况下,捆绑包将链接到应用程序二进制文件以访问应用程序的导出 API。它们可以通过将-bundle 标志传递给编译器来创建。

dylib 和 bundle 都可以使用dl API(例如dlopendlclose)动态加载。无法像共享库一样链接捆绑包。但是,捆绑包可能链接到真正的共享库。这些将在加载包时自动加载。

从历史上看,差异更为显着。在 Mac OS X 10.0 中,无法动态加载库。 10.1 引入了一组 dyld API(例如NSCreateObjectFileImageFromFileNSLinkModule)来加载和卸载包,但它们不适用于 dylib。在 10.3 中添加了与捆绑包一起使用的 dlopen 兼容性库;在 10.4 中,dlopen 被重写为 dyld 的本机部分,并添加了对加载(但不卸载)dylib 的支持。最后,10.5 添加了对使用 dlclose 和 dylib 的支持,并弃用了 dyld API。

在 Linux 等 ELF 系统上,both use the same file format;任何一段共享代码都可以用作库和动态加载。

最后,请注意,在 Mac OS X 中,"bundle"可以引用具有标准化结构的目录,该结构包含可执行代码和该代码使用的资源。存在一些概念上的重叠(特别是像插件这样的“可加载包”,它们通常包含 Mach-O 包形式的可执行代码),但不应将它们与上面讨论的 Mach-O 包混淆。

其他参考:

Fink Porting Guide,这个答案的基础(虽然已经过时了,因为它是为 Mac OS X 10.3 编写的)。 ld(1) 和 dlopen(3) Dynamic Library Programming Topics Mach-O Programming Topics

【讨论】:

感谢您的广泛评论 :) 我是否理解正确,如果我从另一个包加载一个包(即路径是应用程序 -> 包 A -> 包 B),然后包 B将无法看到捆绑包 A 中的任何符号?如果是的话,有没有办法以某种方式解决这个问题?我刚刚打了,我想:***.com/questions/4193539/… @noloader: -dynamiclib 是一个 GCC 标志。它使编译器将-dylib 传递给ld。 更新了 Mac OSX 上 ld 手册页的 URL:manpages.info/macosx/ld.1.html【参考方案2】:

.so 文件不是共享库的 UNIX 文件扩展名。

这只是一个普通的。

检查ArnaudRecipes sharedlib page的第3b行

基本上 .dylib 是用于表示共享库的 mac 文件扩展名。

【讨论】:

@ninefingers。正确的。但是一些工具将使用默认值,除非某些东西非常明确。例如当使用 -l 标志时,编译器将使用特定于平台的共享库扩展(实际标志可能非常跨编译器)。【参考方案3】:

mac os x 上 .dylib 和 .so 的区别在于它们的编译方式。对于 .so 文件,您使用 -shared,对于 .dylib,您使用 -dynamiclib。 .so 和 .dylib 都可以作为动态库文件互换,并且具有 DYLIB 或 BUNDLE 类型。以下是显示此内容的不同文件的读数。

libtriangle.dylib:
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
MH_MAGIC_64  X86_64        ALL  0x00       DYLIB    17       1368   NOUNDEFS DYLDLINK TWOLEVEL NO_REEXPORTED_DYLIBS



libtriangle.so:
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
MH_MAGIC_64  X86_64        ALL  0x00       DYLIB    17       1256   NOUNDEFS DYLDLINK TWOLEVEL NO_REEXPORTED_DYLIBS

triangle.so:
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
MH_MAGIC_64  X86_64        ALL  0x00      BUNDLE    16       1696   NOUNDEFS DYLDLINK TWOLEVEL

两者在 Mac OS X 上等价的原因是为了向后兼容其他编译为 .so 文件类型的 UNIX OS 程序。

编译注意事项:无论是编译.so 文件还是.dylib 文件,都需要在链接步骤中将正确的路径插入到动态库中。您可以通过将 -install_name 和文件路径添加到链接命令来执行此操作。如果你不这样做,你会遇到这篇文章中看到的问题:Mac Dynamic Library Craziness (May be Fortran Only)。

【讨论】:

如何使./configure 生成.dylib 文件而不是捆绑文件.so./configure --enable-shared 不执行此任务。 根据我的经验,mac 上的大多数配置文件要么构建一个 .so 文件,要么构建一个静态库文件,因为配置文件使用标准的 unix / linux 文件名。【参考方案4】:

我刚刚在 OSX 上使用 cmake 构建幼稚代码时的观察:

cmake ... -DBUILD_SHARED_LIBS=OFF ...

创建 .so 文件

同时

cmake ... -DBUILD_SHARED_LIBS=ON ...

创建 .dynlib 文件。

也许这对任何人都有帮助。

【讨论】:

以上是关于汽车上的IG-on 和 ACC 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

电动汽车有常电、IG1电源、IG2电源、ACC电源,它们之间有啥区别?

汽车激光雷达有啥用?激光雷达和毫米波雷达的区别

123墨盒和123ⅹL墨盒有啥区别?

SQL和T_SQL有啥区别

发布版本和调试版本的应用程序操作有啥区别吗?

jwt上的私人和公共索赔有啥区别