C++ &引用;错误:太多“pragma选项align=reset”;在mac上使用GCC4.8

C++ &引用;错误:太多“pragma选项align=reset”;在mac上使用GCC4.8,c++,macos,gcc,pragma,libusb,C++,Macos,Gcc,Pragma,Libusb,我使用macports将gcc更新为4.8.1版。我想用这个版本来构建libusbx1.0.17。但是当我“./configure”然后“make”libusbx时,我得到了“错误:太多的#pragma options align=reset”(请参见下面的错误),它无法构建。如果我用'CC=clang./configure'配置libusbx,然后用'make'配置它,它可以正常工作,但这是用GCC4.2构建的,这不是我想要的。有没有办法在mac上用GCC4.8构建libusbx?谢谢 mak

我使用macports将gcc更新为4.8.1版。我想用这个版本来构建libusbx1.0.17。但是当我“./configure”然后“make”libusbx时,我得到了“错误:太多的#pragma options align=reset”(请参见下面的错误),它无法构建。如果我用'CC=clang./configure'配置libusbx,然后用'make'配置它,它可以正常工作,但这是用GCC4.2构建的,这不是我想要的。有没有办法在mac上用GCC4.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的格式似乎是这样的

#pragma pack(1)
... struct ....
#pragma options align=reset

使用gcc 4.8的等效标准是什么?它们似乎都是正确配对的,所以问题一定是GCC4.8不理解其中一个。

我通过更改所有行来编译它 在文件/System/Library/Frameworks/IOKit.framework/Headers/usb/usb.h中,带有

"#pragma options align=reset"


我可以证实这是有效的。这是否有可能被mac接受为补丁/包含为补丁?
"#ifdef __clang__
    #pragma options align=reset
#else
    #pragma pack()
#endif"