在装有 GCC 4.8 的 Mac 上"error: too many #pragma options align=reset"
"error: too many #pragma options align=reset" on mac with gcc 4.8
我使用macports将gcc更新到4.8.1版本。我想使用该版本来构建libusbx 1.0.17。但是当我"./configure"然后"make"libusbx时,我得到"错误:太多 #pragma 选项对齐=重置"(请参阅下面的错误),并且无法构建。如果我使用 'CC=clang ./configure' 配置 libusbx,然后"make"它工作正常,但那是使用 gcc 4.2 构建的,这不是我想要的。有没有办法在 mac 上使用 gcc 4.8 构建 libusbx?谢谢
make all-recursive
Making all in libusb
CC libusb_1_0_la-core.lo
CC libusb_1_0_la-descriptor.lo
CC libusb_1_0_la-io.lo
CC libusb_1_0_la-strerror.lo
CC libusb_1_0_la-sync.lo
CC libusb_1_0_la-hotplug.lo
CC os/libusb_1_0_la-threads_posix.lo
CC os/libusb_1_0_la-darwin_usb.lo
In file included from /System/Library/Frameworks/IOKit.framework/Headers/usb/IOUSBLib.h:27:0,
from os/darwin_usb.h:27,
from os/darwin_usb.c:43:
/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h:576:9: error: too many #pragma options align=reset
#pragma options align=reset
^
In file included from /System/Library/Frameworks/IOKit.framework/Headers/usb/IOUSBLib.h:27:0,
from os/darwin_usb.h:27,
from os/darwin_usb.c:43:
/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h:746:9: error: too many #pragma options align=reset
#pragma options align=reset
^
/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h:797:9: error: too many #pragma options align=reset
#pragma options align=reset
^
/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h:815:9: error: too many #pragma options align=reset
#pragma options align=reset
^
/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h:835:9: error: too many #pragma options align=reset
#pragma options align=reset
^
os/darwin_usb.c: In function 'darwin_get_device_descriptor':
os/darwin_usb.c:58:76: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
#define DARWIN_CACHED_DEVICE(a) ((struct darwin_cached_device *) (((struct darwin_device_priv *)((a)->os_priv))->dev))
^
[...]'
在USB.h文件中,编译指示似乎是这种形式。
#pragma pack(1)
... struct ....
#pragma options align=reset
适用于 gcc 4.8 的等效项是什么?它们似乎都配对正确,所以问题一定是 gcc 4.8 不理解其中一个。
我能够通过更改所有行来编译它在文件/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h 中,带有
"#pragma options align=reset"
自
"#ifdef __clang__
#pragma options align=reset
#else
#pragma pack()
#endif"
相关文章:
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 如何修复"too few arguments to function"?
- fopen 在创建大量文件后因 EFBIG "File too large" 而失败
- VC++ wcscpy_s随机断言"Buffer is too small"
- 从 std::ostream 重载 << 运算符时,为什么编译器会给出"too many parameters for this operator function"错误?
- 谷歌模拟 - 怎么说"function must be called ONCE with a certain parameter but ok to be called many times with
- VS说"Too few arguments...",但其他编译器给了我正确的输出?
- 连接到MySQL时如何修复xdev C++ api中的'string too long'错误
- 一次启用 MANY 类的成员字段,具体取决于模板<T>
- c++ (XORString): "recursive type or function dependency context too complex"
- 尝试在 eclipse CDT 中提取函数时"Too many declarations in selection"错误消息
- 如何在QxORM中定义具有多个主键的表,其中一个主键是与另一个表的"many to one"关系
- 对SDL_*many*的未定义引用
- 将嵌套结构变量从 C++ 传递到C++ dll 会导致 (L "Buffer is too small" && 0)
- 在装有 GCC 4.8 的 Mac 上"error: too many #pragma options align=reset"
- "Too Many Files" Nexus 5/6棒棒糖上的错误
- Linux 系统不允许创建套接字,因为"Too many open files"*即使在重新启动后*
- 在Qt中编译巨大的头文件时"too many sections"错误
- 使用 std::累积,得到一个"too many arguments"错误