- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试让一个工作程序通过 Eclipse 运行(以便于调试),但我似乎无法完成它。
我有一个简单的命令可以通过终端编译程序:
gcc -m32 *.c -lm
然后我可以正确地执行 ./a.out
。
为了在 Eclipse 中使用用户友好的 gdb
插件,我也想在 Eclipse 中编译和运行它。
到目前为止,我已将 -lm -m32 -w
添加到“Cross GCC Compiler”下项目设置中的“Miscellaneous”字段以及“Cross GCC Compiler”下的“Miscellaneous”字段中GCC 链接器”。
该程序似乎可以正常编译(见下文)。但是,当我选择 libslip
二进制文件并尝试执行它时,它立即崩溃了。
当我通过终端运行 libslip
可执行文件时,我得到以下输出:
Debug$ ./libslip
Killed
当我通过 Eclipse 运行它时,我得到了这个:
<terminated> libslip [C/C++ Application] <path>
gdb libslip
输出如下:
Reading symbols from libslip...done.
(gdb) b 1
Breakpoint 1 at 0xb4d3: file ../SlipTest.c, line 1.
(gdb) run
Starting program: /home/christophe/School/Semester 2/Programming Language Engineering/Section 5/eclipse-workspace/slip/Debug/libslip
Program received signal SIGSEGV, Segmentation fault.
0x00000001 in ?? ()
(gdb)
Eclipse 中编译过程的控制台输出:
19:10:24 **** Build of configuration Debug for project slip ****
make all
Building file: ../SlipDictionary.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipDictionary.d" -MT"SlipDictionary.d" -o "SlipDictionary.o" "../SlipDictionary.c"
Finished building: ../SlipDictionary.c
Building file: ../SlipEvaluate.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipEvaluate.d" -MT"SlipEvaluate.d" -o "SlipEvaluate.o" "../SlipEvaluate.c"
Finished building: ../SlipEvaluate.c
Building file: ../SlipGrammar.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipGrammar.d" -MT"SlipGrammar.d" -o "SlipGrammar.o" "../SlipGrammar.c"
Finished building: ../SlipGrammar.c
Building file: ../SlipMain.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipMain.d" -MT"SlipMain.d" -o "SlipMain.o" "../SlipMain.c"
Finished building: ../SlipMain.c
Building file: ../SlipMemory.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipMemory.d" -MT"SlipMemory.d" -o "SlipMemory.o" "../SlipMemory.c"
Finished building: ../SlipMemory.c
Building file: ../SlipNative.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipNative.d" -MT"SlipNative.d" -o "SlipNative.o" "../SlipNative.c"
Finished building: ../SlipNative.c
Building file: ../SlipPool.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipPool.d" -MT"SlipPool.d" -o "SlipPool.o" "../SlipPool.c"
Finished building: ../SlipPool.c
Building file: ../SlipPrint.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipPrint.d" -MT"SlipPrint.d" -o "SlipPrint.o" "../SlipPrint.c"
Finished building: ../SlipPrint.c
Building file: ../SlipRead.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipRead.d" -MT"SlipRead.d" -o "SlipRead.o" "../SlipRead.c"
Finished building: ../SlipRead.c
Building file: ../SlipScan.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipScan.d" -MT"SlipScan.d" -o "SlipScan.o" "../SlipScan.c"
Finished building: ../SlipScan.c
Building file: ../SlipTest.c
Invoking: Cross GCC Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -lm -m32 -w -MMD -MP -MF"SlipTest.d" -MT"SlipTest.d" -o "SlipTest.o" "../SlipTest.c"
Finished building: ../SlipTest.c
Building target: libslip
Invoking: Cross GCC Linker
gcc -m32 -lm -w -shared -o "libslip" ./SlipDictionary.o ./SlipEvaluate.o ./SlipGrammar.o ./SlipMain.o ./SlipMemory.o ./SlipNative.o ./SlipPool.o ./SlipPrint.o ./SlipRead.o ./SlipScan.o ./SlipTest.o
Finished building target: libslip
19:10:24 Build Finished (took 560ms)
CodeBlocks 构建日志
-------------- Clean: Debug in Slip1 (compiler: GNU GCC Compiler)---------------
Cleaned "Slip1 - Debug"
-------------- Build: Debug in Slip1 (compiler: GNU GCC Compiler)---------------
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipDictionary.c -o obj/Debug/SlipDictionary.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipEvaluate.c -o obj/Debug/SlipEvaluate.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipGrammar.c -o obj/Debug/SlipGrammar.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipMain.c -o obj/Debug/SlipMain.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipMemory.c -o obj/Debug/SlipMemory.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipNative.c -o obj/Debug/SlipNative.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipPool.c -o obj/Debug/SlipPool.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipPrint.c -o obj/Debug/SlipPrint.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipRead.c -o obj/Debug/SlipRead.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipScan.c -o obj/Debug/SlipScan.o
gcc -Wall -g -w -c /home/christophe/Desktop/CodeBlocks/Slip1/Slip1/SlipTest.c -o obj/Debug/SlipTest.o
g++ -o bin/Debug/Slip1 obj/Debug/SlipDictionary.o obj/Debug/SlipEvaluate.o obj/Debug/SlipGrammar.o obj/Debug/SlipMain.o obj/Debug/SlipMemory.o obj/Debug/SlipNative.o obj/Debug/SlipPool.o obj/Debug/SlipPrint.o obj/Debug/SlipRead.o obj/Debug/SlipScan.o obj/Debug/SlipTest.o
Output file is bin/Debug/Slip1 with size 136,52 KB
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
最佳答案
我终于找到了!答案是不要手动添加 -lm
,而是将其添加到库中。
让它工作的方法是:
右键单击“项目”>“属性”>“C/C++ 构建”>“设置”>“GCC C 链接器”>“库”> 添加“m”。
这使得它可以完美地编译和运行! :)
感谢这个解决方案,我找到了它:https://stackoverflow.com/a/7860702/1225786
关于在 Eclipse SIGSEV 中编译的 C 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24893653/
在我的项目中,我在 Linux 主机上构建了三个应用程序。 输出二进制文件是, 主进程 更新数据 数据库进程 问题: gdb 一次只能处理一个可执行文件进行调试? 这三个可执行文件都不能在 gdb 中
我一直在尝试让一个工作程序通过 Eclipse 运行(以便于调试),但我似乎无法完成它。 我有一个简单的命令可以通过终端编译程序: gcc -m32 *.c -lm 然后我可以正确地执行 ./a.ou
我在运行 gatsby build 时遇到问题在 my Gatsby site只有在 Github Actions 容器中运行时才会发生这种情况。它也不总是发生。作为一个很好的例子,今天 Depend
根据 sigaction 的手册页,如果我们将它与 SIGCHLD 一起使用,那么在我们的处理函数中 - 这是如果我们使用 void (*sa_sigaction)(int, siginfo_t *,
我是一名优秀的程序员,十分优秀!