アプリ版:「スタンプのみでお礼する」機能のリリースについて

ワークステーション上のSun-OS向けに開発されたC言語で開発されたソフトウエアをPC-Linux上に移植したい場合、どのような改修が必要になるでしょうか?
基本的にはLinuxクローンなので、かなりそのままでも動きそうな気がするのですが。

システムコールなどでワークステーション特有とかSun-OS特有なものってあるのでしょうか?
両方とも多少開発経験があるのですが、あまりシステムコールを多用してなかったものでよくわかりません。(特にPC-Linux側)

わかる方がいましたらご回答願います。

A 回答 (3件)

はまる可能性としては、



関数へ渡す値をポインタで渡す場合、
バイナリファイルを読み書きする場合、
メモリ参照をしている場合
などなど、いろいろ考えられます。

また、ネットワークプログラミングでも注意が必要です。
ネットワークプログラミングでは、エンディアンの違いを吸収する
関数が用意されています。
(INETプロトコルにおけるネットワークバイトオーダは、ビッグエンディアン
に統一されています。)

ソケット構造体にポート番号を設定する場合、

addr.sin_port = 3000;

とはしないで、

addr.sin_port = htons(3000);

と指定します。
これで、各アーキテクチャのコンパイラが自動的にエンディアン
の違いを吸収してくれます。
    • good
    • 0
この回答へのお礼

具体的な解説ありがとうございます。
参考にさせていただきたいと思います。

お礼日時:2003/08/09 21:45

逆の経験ですが,Windowsの計測システムで取得されたbinaryのデータファイルを読むのに,endianの変換が必要でした.



要は,ネットワーク経由にせよ何にせよ,endian の異なるシステム間でデータのやりとりをする場合には要注意ということだと思います.
言うまでもありませんが,元々のシステムが,endianに依存しないように書かれていれば(本来そうすべき)問題は起きません.

endian 以外ではまりそうなのは int の長さとかですかね?
これもシステム非依存に書くべきものではあります.
    • good
    • 0
この回答へのお礼

ありがとうございます。
今現在は開発の仕事ではないのですが、かつては両システムで開発をしたことがあります。しかしながら「エンディアン」や「intの長さ」が影響するような移植などの経験はありませんでした。逆に言うと既存のシステム側にそういった移植性まで考慮している可能性はないと思って見る必要があるかもしれませんね。(もしちゃんと配慮されていたら自分たちが開発者として甘かったということで素直に反省します。)

お礼日時:2003/08/09 21:50

>PC-Linux上に移植したい場合、どのような改修が必要になるでしょうか?



ビッグエンディアン・リトルエンディアンの違いを考慮する必要はあります。
    • good
    • 0
この回答へのお礼

メモリ上へのデータ格納方式の違いがありうるということですね。これはプログラム上でメモリ参照をしている場合に問題が発生しうるということでしょうか?
これが原因で具体的に問題になった例などがございましたら教えていただけないでしょうか?
自分でもちょっと調べてみます、ありがとうございました。

お礼日時:2003/08/07 18:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!