LINUX.ORG.RU

написание бинарно-переносимых приложений


0

2

Так как с gnuplot вышла заминка, возникла мысль сделать самому. Есть у меня debian на sparc, запускаемый в qemu. И надо сделать приложение, собрав которое в дебиане, я смогу запустить его на солярисе.

Приложение предельно простое - читает файл, строит график и выводит его в другой файл.

Собственно, проблема в том, что сможет ли приложение собранное с libc в линуксе слинковаться с соляровской libc?

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 1)

собрать все статиком по бинарю на каждую платформу, завернуть в shell скрипт вытягивающий нужный бинарь из хвоста и запускающий его.

exception13 ★★★★★
()
Ответ на: комментарий от exception13

собрать все статиком по бинарю на каждую платформу,

Как собирать под солярис из линукса?

cvs-255 ★★★★★
() автор топика

сделать приложение, собрав которое в дебиане, я смогу запустить его на солярисе

man кросскомпиляция

на ЛОРе кто-то вроде баловался, xtraeft вроде

anonymous
()
Ответ на: комментарий от exception13

Solaris 10 в qemu не ставится, почему-то. И это известная проблема

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

man кросскомпиляция

требуется тулчейн, библиотеки и заголовочные файлы. Ничего из этого у меня нет.

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от Eddy_Em

На том компьютере, где я собираюсь это запускать, нет прав рута, и я не нашел компилятора.

Правда, я нашел java, можно конечно попробовать, но как будет с производительностью, не знаю еще.

А запустить solaris10 на qemu проблематично.

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

А при чем здесь рут? Скомпилять что-то права рута не нужны. А ежели нет компилятора, то это на 99.9% плохая идея. Жаба — дрянь, тормозное Г.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от cvs-255

Т.е. тебе "что бы то ни было" нужен гнуплот в солярке?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от note173

Зачем в этих наших линуксах исполняемые архивы? Короткий sh-скрипт написать и положить все бинарники в какой хочешь каталог.

Deleted
()

смогу запустить его на солярисе.

Попроси доступ к целевой системе и собери прямо там.

i-rinat ★★★★★
()
Ответ на: комментарий от mashina

А где они, ориентировочно, могут быть?

cvs-255 ★★★★★
() автор топика

И надо сделать приложение, собрав которое в дебиане, я смогу запустить его на солярисе.

Если ты не имеешь ввиду кросскомпайл, то я надеюсь ты понимаешь, на сколько это нетривиальная задача и то, что решение может оказаться сложнее собственно программы?

nanoolinux ★★★★
()
Ответ на: комментарий от one_more_hokum

лишь бы не исользовать яву

А какой язык высокого уровня (ЯВУ) нужно использовать в данном случае?

йаву!

nanoolinux ★★★★
()
Ответ на: комментарий от exception13

собрать все статиком по бинарю на каждую платформу,

Сразу видно человека не знакомого с Солярой.

anonymous
()

сможет ли приложение собранное с libc в линуксе слинковаться с соляровской libc?

НЕТ.

anonymous
()
Ответ на: комментарий от anonymous

написал helloworld


public class LogMain
{
  public static void main(String args[])
  {
    System.out.println("Hello world!");
  }
}

javac LogMain.java

java LogMain.class

Exception in thread "main" java.lang.NoClassDefFoundError: LogMain/class

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от cvs-255

если 'pkginfo -l SUNWgcc' молчит, значит ставили минималку или снесли. тогда качай исо солярки с сайта оракула и бери оттуда пакет SUNWgcc, ну и дальше с бубном вокруг home коли рута нет. 'pkgdep -c SUNWgcc' скажет, какие ещё пакеты нужно взять.

EvgGad_303 ★★★★★
()
Ответ на: комментарий от cvs-255

Дык надо не java LogMain.class, а просто java LogMain.

CARS ★★★★
()

в продолжении предложения про tcl :-)

#!/usr/bin/tclsh
package require Tk

set input "data.xy"
set output "data.ps"

set width 640
set height 480

proc readxy { name } {
	set chan [ open $name "r" ]
	set result [ read $chan ]
	close $chan
	set result
}
set series [ readxy "data.xy" ]

set minx [ set maxx [ lindex $series 0 ] ]
set miny [ set maxy [ lindex $series 1 ] ]
foreach {x y} $series {
	if { $minx > $x } {
		set minx $x
	}
	if { $maxx < $x } {
		set maxx $x
	}
	if { $miny > $y } {
		set miny $y
	}
	if { $maxy < $y } {
		set maxy $y
	}
}
set dy [expr double($height)/($maxy-$miny)]
set dx [expr double($width)/($maxx-$minx)]

canvas .plot -width $width -height $height
pack .plot

set num 0
foreach { x0 y0 } $series {
	if { $num != 0 } {
		.plot create line [expr ($x0-$minx)*$dx] [expr $height-($y0-$miny)*$dy ] [expr ($x1-$minx)*$dx] [expr $height-($y1-$miny)*$dy ]
	}
	incr num 
	set x1 $x0
	set y1 $y0
}
update
set s [ .plot postscript ]
#optional
tkwait window .

set f [ open $output "w" ] 
puts -nonewline $f $s
close $f
exit 0

обработку ошибок и рисование осей сделать по вкусу :-)

ps чуток времени и 60 строк кода, а то вы с ынтерпрайзной java ещё долго возиться будете

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от note173

Наши нет.

По мойму наитупейшая идея. По идее надо сделать один проект и две цели для сборки.

Альтернативы: 1) Генерить график скриптами в SVG. 2) Юзать Java\JVM и т.п. среды выполения.

Khenty
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.