Wie benutze ich gcc-builtin __sync_bool_compare_and_swap in g++ auf MacOSX?
Ich habe einige code, der verwendet:
__sync_bool_compare_and_swap
kompiliert er problemlos auf Linux.
Aber wenn ich versuche zu kompilieren, die es auf MacOSX, die in g++, den ich bekommen:
error: ‘__sync_bool_compare_and_swap’ was not declared in this scope
Wie kann ich dieses Problem beheben? (Das ist Mac OSX 10.5.8, es ist also intel .. .und sollte dieser Anleitung).
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie es nicht finden können, können Sie OSCompareAndSwap() auf dem Mac.
Aber es wäre schön, um cross-Plattform-code, wäre es nicht.
Versuchen Sie die Befehlszeile option
dem linker.
wenn gcc --version nicht zeigen, gcc 4.1 oder neuer, dann haben Sie nicht die Instruktion.
Xcode 3 (das ist, was auf Leopard) Schiffe mit gcc 4.2, aber der Standard-compiler ist 4.0, das nicht über die Anweisung
Habe es gerade getestet auf snow leopard, und die Standard-gcc 4.2.1, wo es funktioniert.
Bitte beachten Sie den Hinweis: Einstellung GCC 4.2 als Standard-compiler auf Mac OS X Leopard
Welche Versionen von GCC benutzt du? (Auf beiden Plattformen). Dies ist eine relativ neue zusätzlich zu GCC.
Vermutung, deine box nicht haben, die Bibliothek, die Sie auf Linux, die verwendet die Funktion.
(Die Funktion umschließt den Unterricht)
OSAtomicAdd32 in libkern/OSAtomic.h
das symbol __sync_bool_compare_and_swap ist in der Werkzeugkette(gcc/g++ und andere Compiler), und im Zusammenhang mit der version.
manchmal, du wirst es finden, wie diese:
./arm-fsl-linux-gnueabi/4.6.2/lib/gcc/arm-fsl-linux-gnueabi/4.6.2/plugin/include/sync-gelieferten.def: "__sync_bool_compare_and_swap",
./arm-fsl-linux-gnueabi/4.6.2/lib/gcc/arm-fsl-linux-gnueabi/4.6.2/plugin/include/sync-gelieferten.def: "__sync_bool_compare_and_swap_1",
./arm-fsl-linux-gnueabi/4.6.2/lib/gcc/arm-fsl-linux-gnueabi/4.6.2/plugin/include/sync-gelieferten.def: "__sync_bool_compare_and_swap_2",
./arm-fsl-linux-gnueabi/4.6.2/lib/gcc/arm-fsl-linux-gnueabi/4.6.2/plugin/include/sync-gelieferten.def: "__sync_bool_compare_and_swap_4",
./arm-fsl-linux-gnueabi/4.6.2/lib/gcc/arm-fsl-linux-gnueabi/4.6.2/plugin/include/sync-gelieferten.def: "__sync_bool_compare_and_swap_8",
./arm-fsl-linux-gnueabi/4.6.2/lib/gcc/arm-fsl-linux-gnueabi/4.6.2/plugin/include/sync-gelieferten.def: "__sync_bool_compare_and_swap_16",