8
votes

Construire Google Breakpad sur Mac OS X

Je tente de construire Google BreakPad pour Mac OS X dans le cadre de la section portant une application, basée sur une application. sur la révision du tronc 782.

Le wiki de breakpad Spécifie que l'on devrait construire client / mac /Breakpad.xcodeproj, qui produit un breakpad.framework, y compris une libernette de manière dynamique si je comprends correctement. Il existe également un exemple de code sur la manière d'utiliser ceci à partir d'une application Objective-C, mais tout cela semble très différent de ce qui semble être la façon normale de faire des choses sur d'autres plates-formes, y compris l'utilisation des plis et d'autres choses qui ne font pas partie de ma candidature. Je préférerais beaucoup faire des choses aussi semblables que possible à travers les plates-formes. P>

par exemple, Ce semble être la façon dont Firefox utilise Breakpad: P> xxx pré>

dans mon projet, nous faisons la même chose et il suffit de lier contre Exception_Handler. lib code> sous Windows. Il semble que sur Linux, Breakpad génère un libbreakpad_client.a code> qui peut être lié de la même manière, mais pas sur Mac OS X. Si je fais P>

./configure
make


1 commentaires

Bonjour VillinTehaspam, pourriez-vous partager vos sources de breakpad qui sont possibles pour la compiler sous MacOSX? J'ai un problème similaire, mais je ne peux pas comprendre comment utiliser des makfiles mis à jour correctement ;-(. J'ai ma question sur alors ici: Stackoverflow.com/Questtions/10450586/... Merci.


3 Réponses :


3
votes

Il n'y a pas de solution dans la source de breakpad pour cela, malheureusement. Les projets Xcode construisent simplement le cadre Breakpad, car c'est l'API client plus pris en charge. Vous pouvez construire le code avec votre propre ensemble de maquillages ou quelle que soit la configuration de la construction que vous désirez de la même manière Firefox en regardant l'ensemble de Mozilla Makefiles:

http: // mxr.mozilla.org/mozilla-entral/source/toolkit/crashreporter/google-breakpad/src/common/makefile.in

http: //mxr.mozilla.org/mozilla-entral/source/toolkit/crashreporter/google-breakpad/src/common/mac/makefile.in

http: // mxr.mozilla.org/mozilla-entral/source/toolkit/crashreporter/google-breakpad/src/client/makefile.in

http://mxr.mozilla.org/mozilla-entral/source/toolkit/crashreporter/google-breakpad/src/client/mac/handler/makefile.in

http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/client/mac/crash_generation/makefile.in

et rassemblement l'ensemble de fichiers référencés dans CSRC / CPPRCS / CMSRCS / CMMSRCS et construisant tous ceux-ci.

Vous pouvez également déposer un bogue dans le Breakpad Issue Tracker à Demandez que le projet Xcode construit également cette bibliothèque statique. Ce ne serait pas un patch difficile.


2 commentaires

Je creuse ce fil, mais comment puis-je utiliser le makefile.in? Y a-t-il un outil que je devrais utiliser? Quel est le processus, à partir de ces fichiers Makefile.in, pour que les bibliothèques soient compilées?


FYI, Mozilla déposa tous des maquillages de leur référentiel, alors qu'ils se sont éloignés de la marque. Bien que votre conseil construit sur les sources reste directement reste toujours, car ils sont énumérables dans le Fichiers Moz.Build comme Unified_sources .



4
votes

Cela pourrait ne pas être utile dans votre cas, mais j'ai trouvé cela pour travailler pour un projet que je travaille sur ce besoin de travailler sur Linux et OSX. Sur Linux, nous utilisons la «normale» AutoTools de faire des choses; ON OSX, nous invoquons Xcodebuild pour créer breakpad.framework , puis le lien avec lequel.

Voici la partie correspondante du fichier CMAKELIST.TXT ( pour cmake voir ici ): xxx

si votre application est construite avec clang -stdlib = libc ++ (qui est assez normal si vous utilisez une utilisation intensive de C ++ 11), vous devez ajouter la phrase gcc_version = com.apple.compilers.llvm.clang.1_0 Autres_cflags = -stdlib = libc ++ autre_ldflags = -stdlib = libc ++ à la fin de la ligne xcodebuild . Cela obligera Xcodebuild à faire la bonne chose.

Si votre application est construite avec GCC et GNU LIBSTDC ++, vous n'avez pas besoin d'ajouter quoi que ce soit à la ligne xcodebuild ligne.


0 commentaires

0
votes

Comment construire libbreakpad_client.a sur Mac OS X? strong> p>

Vous ne pouvez construire que Dynamic Framework Code> pour MacOS Intel64 & Apple Silicon P>

Checkout https://github.com/sunbreak/cli-breakpad.trial p>

code de récupération h1> xxx pré>

Configuration et construction h1>
mkdir -p ./breakpad/mac/$(arch)
cp -r $BREAKPAD/src/src/client/mac/build/Release/Breakpad.framework ./breakpad/mac/
cp $BREAKPAD/src/src/tools/mac/dump_syms/build/Release/dump_syms ./breakpad/mac/
cp $BREAKPAD/src/src/processor/minidump_stackwalk ./breakpad/mac/$(arch)
mkdir Frameworks && cd Frameworks && ln -s ../breakpad/mac/Breakpad.framework .


0 commentaires