Автор Тема: Простенький вопрос по C  (Прочитано 3904 раз)

Оффлайн andrew_b

  • Завсегдатай
  • *
  • Сообщений: 535
Re: Простенький вопрос по C
« Ответ #15 : 24.03.2010 11:10:22 »
это не фатально. Поскольку по умолчанию в C стэк очищается вызывающим, никакой проблемы для сборки и выполнения написанного нет.
Насчёт нефатально -- это как сказать. Забытые инклюды и, как следствие, неизвестные прототипы функций на 64-разрядной платформе порождают интересные сегфолты. :)

Оффлайн bormant

  • Завсегдатай
  • *
  • Сообщений: 358
Re: Простенький вопрос по C
« Ответ #16 : 24.03.2010 12:22:32 »
неизвестные прототипы функций на 64-разрядной платформе порождают интересные сегфолты
Независимо от соглашений о вызове (calling convention) этих функций? __pascal соглашение (стэк чистит вызываемый) при неверном вызове и на 32 разрядах к такому может привести...
« Последнее редактирование: 24.03.2010 12:24:56 от bormant »

Оффлайн andrew_b

  • Завсегдатай
  • *
  • Сообщений: 535
Re: Простенький вопрос по C
« Ответ #17 : 24.03.2010 14:13:45 »
Не видя прототипа функции, компилятор генерирует некий прототип, к которому применяет умолчательные соглашения. Вот и получается: с одной стороны, несоответствие типов, с другой -- несоответствие размеров этих типов. На 64-битной платформе несоответствие размеров усугубляется.

ne_spit

  • Гость
Re: Простенький вопрос по C
« Ответ #18 : 25.03.2010 06:08:29 »
Прерву на минуту спор и задам ещё крайне маленький и примитивный вопрос по С
есть вот такая программка
#include <qapplication.h>
#include <qlabel.h>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel *label = new QLabel("Hello, C!", 0);
    app.setMainWidget(label);
    label->show();
    return app.exec();
}
сохраняю её в отдельной папке
потом перехожу в эту папку
cd helloтам стоит файл
сels.cppзапускаю компиляцию
qmake -projektВ результате получаю сообщения
bash-3.2$ qmake -projekt
bash: qmake: команда не найдена
в чём тут интересно может быть дело?
а если просто сделать
make -proektто выходит вообще ерунда какая-то
bash-3.2$ make -projekt
# GNU Make 3.81
# Copyright (C) 2006  Free Software Foundation, Inc.
# This is free software; see the source for copying conditions.
# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

# This program built for i586-alt-linux-gnu
make: *** Не заданы цели и не найден make-файл.  Останов.

# База данных Make, напечатана Wed Mar 24 12:32:54 2010

# Переменные

# автоматическая
<D = $(patsubst %/,%,$(dir $<))
# автоматическая
?F = $(notdir $?)
# по умолчанию
CWEAVE = cweave
# автоматическая
?D = $(patsubst %/,%,$(dir $?))
# определена в среде
LINES = 24
# определена в среде
COLUMNS = 80
# автоматическая
@D = $(patsubst %/,%,$(dir $@))
# определена в среде
XAUTHORITY = /home/sclif/.Xauthority
# автоматическая
@F = $(notdir $@)
# по умолчанию
PC = pc
# Make-файл
CURDIR := /home/sclif/hello
# Make-файл
SHELL = /bin/sh
# определена в среде
JRE_HOME = /usr/lib/jvm/jre
# по умолчанию
CO = co
# определена в среде
_ = /usr/bin/make
# по умолчанию
PREPROCESS.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F
# по умолчанию
LINK.o = $(CC) $(LDFLAGS) $(TARGET_ARCH)
# по умолчанию
OUTPUT_OPTION = -o $@
# по умолчанию
COMPILE.cpp = $(COMPILE.cc)
# Make-файл
MAKEFILE_LIST :=
# по умолчанию
LINK.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# определена в среде
XDG_DATA_DIRS = /usr/share:/var/cache
# определена в среде
DBUS_SESSION_BUS_ADDRESS = unix:abstract=/var/run/dbus/users/dbus-G9fTPv6nDk,guid=dce976d0393d2a5dbf0da9274ba9a806
# по умолчанию
CC = cc
# по умолчанию
CHECKOUT,v = +$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)
# определена в среде
LESSOPEN = |/usr/share/less/lesspipe.sh %s
# по умолчанию
CPP = $(CC) -E
# по умолчанию
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# определена в среде
PATH = /home/sclif/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games
# по умолчанию
LD = ld
# по умолчанию
TEXI2DVI = texi2dvi
# по умолчанию
YACC = yacc
# по умолчанию
COMPILE.mod = $(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)
# по умолчанию
ARFLAGS = rv
# по умолчанию
LINK.r = $(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# определена в среде
WINDOWID = 29360137
# по умолчанию
COMPILE.f = $(FC) $(FFLAGS) $(TARGET_ARCH) -c
# по умолчанию
LINT.c = $(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
# по умолчанию
LINT = lint
# по умолчанию
YACC.y = $(YACC) $(YFLAGS)
# по умолчанию
PREPROCESS.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F
# по умолчанию
AR = ar
# определена в среде
GDK_PIXBUF_MODULEDIR = /usr/lib/gtk-2.0/2.10.0/loaders
# по умолчанию
.FEATURES := target-specific order-only second-expansion else-if archives jobserver check-symlink
# по умолчанию
TANGLE = tangle
# определена в среде
LS_COLORS =
# по умолчанию
GET = get
# автоматическая
%F = $(notdir $%)
# определена в среде
DISPLAY = :0.0
# по умолчанию
COMPILE.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# по умолчанию
CTANGLE = ctangle
# определена в среде
HISTFILESIZE = 9999
# определена в среде
DBUS_SESSION_BUS_PID = 10946
# по умолчанию
.LIBPATTERNS = lib%.so lib%.a
# по умолчанию
LINK.C = $(LINK.cc)
# определена в среде
PWD = /home/sclif/hello
# по умолчанию
LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)
# определена в среде
GTK_PATH = /usr/lib/gtk-2.0/2.10.0
# определена в среде
HELP_BROWSER = /usr/bin/xbrowser
# по умолчанию
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# определена в среде
G_BROKEN_FILENAMES = 1
# по умолчанию
LINK.s = $(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)
# определена в среде
HOME = /home/sclif
# определена в среде
LESSKEY = /etc/.less
# определена в среде
LOGNAME = sclif
# определена в среде
G_FILENAME_ENCODING = utf8
# автоматическая
+F = $(notdir $+)
# автоматическая
^D = $(patsubst %/,%,$(dir $^))
# определена в среде
HOSTNAME = 1.localdomain
# определена в среде
WRASTER_COLOR_RESOLUTION0 = 4
# определена в среде
MAKELEVEL := 0
# определена в среде
SSH_ASKPASS = /usr/lib/openssh/ssh-askpass
# определена в среде
COLORTERM = rxvt
# по умолчанию
MAKE = $(MAKE_COMMAND)
# определена в среде
SHLVL = 2
# по умолчанию
AS = as
# по умолчанию
PREPROCESS.S = $(CC) -E $(CPPFLAGS)
# по умолчанию
COMPILE.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# по умолчанию
MAKE_VERSION := 3.81
# определена в среде
USER = sclif
# по умолчанию
FC = f77
# определена в среде
QTLIB = /usr/lib/qt3/lib/
# определена в среде
LESS = -MM
# автоматическая
%D = $(patsubst %/,%,$(dir $%))
# по умолчанию
WEAVE = weave
# по умолчанию
MAKE_COMMAND := make
# по умолчанию
LINK.cpp = $(LINK.cc)
# по умолчанию
F77 = $(FC)
# определена в среде
OLDPWD = /home/sclif
# по умолчанию
.VARIABLES :=
# определена в среде
TMPDIR = /home/sclif/tmp
# автоматическая
*F = $(notdir $*)
# по умолчанию
COMPILE.def = $(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)
# по умолчанию
LEX = lex
# по умолчанию
RM = rm -f
# Make-файл
MAKEFLAGS = rp
# определена в среде
MFLAGS = -rp
# автоматическая
*D = $(patsubst %/,%,$(dir $*))
# определена в среде
MAIL = /var/mail/sclif
# по умолчанию
LEX.l = $(LEX) $(LFLAGS) -t
# автоматическая
+D = $(patsubst %/,%,$(dir $+))
# по умолчанию
COMPILE.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c
# определена в среде
BROWSER = /usr/bin/xbrowser
# по умолчанию
M2C = m2c
# определена в среде
WMAKER_BIN_NAME = /usr/bin/wmaker
# определена в среде
COLORFGBG = default;0
# по умолчанию
MAKEFILES :=
# по умолчанию
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# автоматическая
<F = $(notdir $<)
# по умолчанию
CXX = g++
# по умолчанию
COFLAGS =
# по умолчанию
COMPILE.C = $(COMPILE.cc)
# автоматическая
^F = $(notdir $^)
# по умолчанию
COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c
# по умолчанию
LINK.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# по умолчанию
SUFFIXES :=
# определена в среде
HISTSIZE = 999
# по умолчанию
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# по умолчанию
COMPILE.s = $(AS) $(ASFLAGS) $(TARGET_MACH)
# по умолчанию
.INCLUDE_DIRS = /usr/include /usr/local/include /usr/include
# определена в среде
QTINC = /usr/lib/qt3/include/
# определена в среде
QTDIR = /usr/lib/qt3/
# по умолчанию
MAKEINFO = makeinfo
# Make-файл
.DEFAULT_GOAL :=
# по умолчанию
TEX = tex
# определена в среде
LANG = ru_RU.UTF-8
# определена в среде
TERM = rxvt-unicode
# по умолчанию
F77FLAGS = $(FFLAGS)
# по умолчанию
LINK.f = $(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# variable set hash-table stats:
# Load=129/1024=13%, Rehash=0, Collisions=17/153=11%

# Pattern-specific Variable Values

# Нет значений переменных особенных для маски

# Каталоги

# . (устройство 838, inode 350896): 4 файлов,нет недостижимых целей.

# 4 файлов,нет impossibilities in 1 directories.

# Implicit Rules

# Неявных правил нет.

# Файлы

# Не является целью:
jekt:
#  Поиск неявных правил не производился.
# Файл очень старый.
#  Файл был обновлен.
#  Успешно обновлено.

# Не является целью:
.SUFFIXES:
#  Поиск неявных правил не производился.
#  Время изменения ни разу не проверялось.
#  Файл не был обновлен.

# Не является целью:
Makefile:
#  A default, MAKEFILES, or -include/sinclude makefile.
#  Производился поиск неявных правил
#  Файл не существует.
#  Файл был обновлен.
#  Попытка обновления безуспешна.
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/0=0%

# Не является целью:
makefile:
#  A default, MAKEFILES, or -include/sinclude makefile.
#  Производился поиск неявных правил
#  Файл не существует.
#  Файл был обновлен.
#  Попытка обновления безуспешна.
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/0=0%

# Не является целью:
.DEFAULT:
#  Поиск неявных правил не производился.
#  Время изменения ни разу не проверялось.
#  Файл не был обновлен.

# Не является целью:
GNUmakefile:
#  A default, MAKEFILES, or -include/sinclude makefile.
#  Производился поиск неявных правил
#  Файл не существует.
#  Файл был обновлен.
#  Попытка обновления безуспешна.
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/0=0%

# files hash-table stats:
# Load=6/1024=1%, Rehash=0, Collisions=0/16=0%
# Пути поиска VPATH

# Не определен путь поиска `vpath'.

# Не определен общий (переменная `VPATH') путь поиска.

# # of strings in strcache: 0
# # of strcache buffers: 0
# strcache size: total = 0 / max = 0 / min = 4096 / avg = 0
# strcache free: total = 0 / max = 0 / min = 4096 / avg = 0

# Печать базы данных Make завершена Wed Mar 24 12:32:54 2010
В чём тут может быть дело то?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Re: Простенький вопрос по C
« Ответ #19 : 25.03.2010 13:09:23 »
qmake-qt4 -project
qmake-qt4
make

Так как может стоять две версии Qt, для qmake (и прочих служебных программ Qt) сделан суффикс -qt3 или -qt4
Сгенерированый qmake файл можно собрать обычной командой make.
« Последнее редактирование: 25.03.2010 13:11:00 от Skull »
Андрей Черепанов (cas@)

ne_spit

  • Гость
Re: Простенький вопрос по C
« Ответ #20 : 25.03.2010 16:52:03 »
Наверное у меня чего-то неправильно установлено, так как
bash-3.2$ qmake-qt4 -proect
bash: qmake-qt4: команда не найдена
bash-3.2$ qmake-qt3 -proect
bash: qmake-qt3: команда не найдена

Но при этом на рабочем столе, во вспомогательном меню, есть программа по настройке внешнего вида приложений Qt - и она - работает.
Qi configurationВо всяком случае изменения в этой программе влияют на другие программы.

Может быть у меня Qt не до конца установлено, а как проверить?

Оффлайн Rock

  • Завсегдатай
  • *
  • Сообщений: 66
Re: Простенький вопрос по C
« Ответ #21 : 25.03.2010 16:58:22 »
Скорей всего не установлены пакеты для разработки на qt
libqt4-devel

От модератора: проверяйте названия пакетов в ALT Linux. Это не Debian.
« Последнее редактирование: 25.03.2010 17:10:59 от Skull »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Re: Простенький вопрос по C
« Ответ #22 : 25.03.2010 17:13:00 »
libqt4-devel — для qmake-qt4
qt4-devel вытягивает все нужные пакеты, в том числе и документацию, Assistant и Designer.
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Re: Простенький вопрос по C
« Ответ #23 : 25.03.2010 17:13:54 »
bash-3.2$ qmake-qt4 -project
У вас опечатка.
Андрей Черепанов (cas@)