我正在为uni做一个SDL项目,并在Windows的Visual Studio中制作了一个可以正常运行的程序,但是当我将该程序放在Linux(演示所需)上时,出现了分段错误。我想知道由于gdb输出而导致的我的cmakelist文件是否错误,主要是sdl库中的东西,但是我不确定我是cmake的新手。
我使用gdb尝试跟踪分段错误,但是并没有太大帮助!从Windows版本开始,我所做的所有更改就是我创建了cmakelists.txt,并更改了Linux上SDL的头文件中的包含。
GDB输出:
project(SDL)
#set( CMAKE_BUILD_TYPE Release)
set( CMAKE_BUILD_TYPE Debug)
cmake_minimum_required(VERSION 2.6)
set (CMAKE_C_FLAGS "-std=c99 -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL_mixer -g")
add_executable(kraken main.c init.c kraken.c worldObject.c menu.c leaderboard.c display.c)
set_property(TARGET kraken PROPERTY C_STANDARD 99)
CMakeLists.txt:
import glob
from os.path import basename, dirname
for file in glob.glob( "/path/to/csvs/**.csv"): # ** = recursive
d = dirname(file) # dir
fn = basename(file) # filename
with open(file) as f, open(f"{d}/new_{fn}", "w+") as f2:
[f2.write(x) for x in list(f) if x[1] == ","]
答案 0 :(得分:1)
#14 0x00007ffff7ab00e8 in SDL_Quit_REAL () from /lib64/libSDL2-2.0.so.0
#15 0x000000000040266f in close () at /home/csunix/sc18mk/Documents/Programming Project/SDL/SDL FOR C/main.c:105
#16 0x00007ffff4cefc1b in xcb_disconnect () from /lib64/libxcb.so.1
xcb_disconnect()
与您的close()
版本无关。重命名它,以免与POSIX的close()
名称冲突或声明为static
。