Skip to main content
Home
for DLMS smart meters
Open source solutions for DLMS smart metering

Main navigation

  • Home
  • Products
  • About us
  • Open Source
  • Community
  • Forum
  • Downloads
User account menu
  • Log in

Breadcrumb

  1. Home
  2. Forums
  3. Cross Compilation Issues For ARM

Cross Compilation issues for ARM

Forum Rules

Before commenting read Forum rules

Don't comment the topic if you have a new question.

You can create a new topic selecting correct category from Gurux Forum and then create a new topic selecting "New Topic" from the top left.

By Nagendra , 25 June, 2021
Forums
Gurux.DLMS

Dear Mikko,

I am using "arm-oe-linux-gnueabi-gcc -E -march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=$SDKTARGETSYSROOT" compiler wherein I am facing issue in linking the application folder.
I am using the following
LINKER = arm-oe-linux-gnueabi-gcc -E -march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=$SDKTARGETSYSROOT -o instead of
LINKER = g++ -o(which was present in example provided).

i am facing this error:-
Compiled src/communication.cpp successfully!
Compiled src/GuruxDLMSClientExample.cpp successfully!
arm-oe-linux-gnueabi-gcc: warning: obj/communication.o: linker input file unused because linking not done
arm-oe-linux-gnueabi-gcc: warning: obj/GuruxDLMSClientExample.o: linker input file unused because linking not done
Linking complete!

I am unable to get gurux.dlms.client.bin file in the bin folder. What would be the issue?

Regards
Nagendra Babu

Profile picture for user Kurumi

Kurumi

5 years 1 month ago

Hi Nagendra,

Hi Nagendra,

Have you created obj and bin folders? You also need to run make in the development folder first to make guruxdlms.lib

BR,
Mikko

Nagendra

5 years ago

Dear Mikko,

Dear Mikko,

I have used this compiler "arm-oe-linux-gnueabi-g++ -march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=$SDKTARGETSYSROOT"

and i am facing this below issue while compiling development folder.
Compiled src/GXAdjacentCell.cpp successfully!
In file included from src/../include/GXPlcSettings.h:41:0,
from src/../include/GXDLMSSettings.h:41,
from src/../include/GXAPDU.h:42,
from src/GXAPDU.cpp:35:
src/../include/GXDLMSPlcRegister.h:44:5: error: 'uint16_t' does not name a type
uint16_t m_AllowedTimeSlots;
^
src/../include/GXDLMSPlcRegister.h:59:5: error: 'uint16_t' does not name a type
uint16_t GetAllowedTimeSlots()
^
src/../include/GXDLMSPlcRegister.h:64:30: error: 'uint16_t' has not been declared
void SetAllowedTimeSlots(uint16_t value)
^
src/../include/GXDLMSPlcRegister.h: In member function 'void CGXDLMSPlcRegister::SetAllowedTimeSlots(int)':
src/../include/GXDLMSPlcRegister.h:66:9: error: 'm_AllowedTimeSlots' was not declared in this scope
m_AllowedTimeSlots = value;
^
In file included from src/../include/GXPlcSettings.h:42:0,
from src/../include/GXDLMSSettings.h:41,
from src/../include/GXAPDU.h:42,
from src/GXAPDU.cpp:35:
src/../include/GXDLMSPlcMeterInfo.h: At global scope:
src/../include/GXDLMSPlcMeterInfo.h:48:5: error: 'uint16_t' does not name a type
uint16_t m_SourceAddress;
^
src/../include/GXDLMSPlcMeterInfo.h:53:5: error: 'uint16_t' does not name a type
uint16_t m_DestinationAddress;
^
src/../include/GXDLMSPlcMeterInfo.h:65:5: error: 'uint16_t' does not name a type
uint16_t GetSourceAddress()
^
src/../include/GXDLMSPlcMeterInfo.h:70:27: error: 'uint16_t' has not been declared
void SetSourceAddress(uint16_t value)
^
src/../include/GXDLMSPlcMeterInfo.h:78:5: error: 'uint16_t' does not name a type
uint16_t GetDestinationAddress()
^
src/../include/GXDLMSPlcMeterInfo.h:83:32: error: 'uint16_t' has not been declared
void SetDestinationAddress(uint16_t value)
^
src/../include/GXDLMSPlcMeterInfo.h: In member function 'void CGXDLMSPlcMeterInfo::SetSourceAddress(int)':
src/../include/GXDLMSPlcMeterInfo.h:72:9: error: 'm_SourceAddress' was not declared in this scope
m_SourceAddress = value;
^
src/../include/GXDLMSPlcMeterInfo.h: In member function 'void CGXDLMSPlcMeterInfo::SetDestinationAddress(int)':
src/../include/GXDLMSPlcMeterInfo.h:85:9: error: 'm_DestinationAddress' was not declared in this scope
m_DestinationAddress = value;
^
In file included from src/../include/GXDLMSSettings.h:41:0,
from src/../include/GXAPDU.h:42,
from src/GXAPDU.cpp:35:
src/../include/GXPlcSettings.h: At global scope:
src/../include/GXPlcSettings.h:74:5: error: 'uint16_t' does not name a type
uint16_t m_MacSourceAddress;
^
src/../include/GXPlcSettings.h:78:5: error: 'uint16_t' does not name a type
uint16_t m_MacDestinationAddress;
^
src/../include/GXPlcSettings.h:86:5: error: 'uint16_t' does not name a type
uint16_t m_AllowedTimeSlots;
^
src/../include/GXPlcSettings.h:124:5: error: 'uint16_t' does not name a type
uint16_t GetMacSourceAddress();
^
src/../include/GXPlcSettings.h:125:30: error: 'uint16_t' has not been declared
void SetMacSourceAddress(uint16_t value);
^
src/../include/GXPlcSettings.h:130:5: error: 'uint16_t' does not name a type
uint16_t GetMacDestinationAddress();
^
src/../include/GXPlcSettings.h:131:35: error: 'uint16_t' has not been declared
void SetMacDestinationAddress(uint16_t value);
^
src/../include/GXPlcSettings.h:142:5: error: 'uint16_t' does not name a type
uint16_t GetAllowedTimeSlots();
^
src/../include/GXPlcSettings.h:143:30: error: 'uint16_t' has not been declared
void SetAllowedTimeSlots(uint16_t value);
^
src/../include/GXPlcSettings.h:182:45: error: 'uint16_t' has not been declared
int ParseDiscover(CGXByteBuffer& value, uint16_t sa, uint16_t da, std::vector<CGXDLMSPlcMeterInfo>& list);
^
src/../include/GXPlcSettings.h:182:58: error: 'uint16_t' has not been declared
int ParseDiscover(CGXByteBuffer& value, uint16_t sa, uint16_t da, std::vector<CGXDLMSPlcMeterInfo>& list);
^
In file included from src/../include/GXDLMSSettings.h:43:0,
from src/../include/GXAPDU.h:42,
from src/GXAPDU.cpp:35:
src/../include/GXCipher.h:84:20: error: 'uint32_t' has not been declared
static int Int(uint32_t* rk,
^
src/../include/GXCipher.h:207:9: error: 'uint64_t' has not been declared
uint64_t& InvocationCounter);
^
In file included from src/../include/GXAPDU.h:42:0,
from src/GXAPDU.cpp:35:
src/../include/GXDLMSSettings.h:203:5: error: 'uint64_t' does not name a type
uint64_t m_ExpectedInvocationCounter;
^
In file included from src/../include/GXAPDU.h:42:0,
from src/GXAPDU.cpp:35:
src/../include/GXDLMSSettings.h:500:5: error: 'uint64_t' does not name a type
uint64_t GetExpectedInvocationCounter();
^
src/../include/GXDLMSSettings.h:501:39: error: 'uint64_t' has not been declared
void SetExpectedInvocationCounter(uint64_t uint32_t);
^
In file included from src/../include/GXDLMSTranslatorStructure.h:43:0,
from src/../include/GXAPDU.h:43,
from src/GXAPDU.cpp:35:
src/../include/TranslatorSimpleTags.h: In static member function 'static unsigned char CTranslatorSimpleTags::GetError(DLMS_SERVICE_ERROR, std::string)':
src/../include/TranslatorSimpleTags.h:826:37: error: 'atol' was not declared in this scope
ret = atol(value.c_str());
^
In file included from src/../include/GXDLMSTranslatorStructure.h:44:0,
from src/../include/GXAPDU.h:43,
from src/GXAPDU.cpp:35:
src/../include/TranslatorStandardTags.h: In static member function 'static unsigned char CTranslatorStandardTags::GetError(DLMS_SERVICE_ERROR, std::string)':
src/../include/TranslatorStandardTags.h:826:37: error: 'atol' was not declared in this scope
ret = atol(value.c_str());
^
src/GXAPDU.cpp: In static member function 'static int CGXAPDU::ParseInitiate(bool, CGXDLMSSettings&, CGXCipher*, CGXByteBuffer&, CGXDLMSTranslatorStructure*)':
src/GXAPDU.cpp:842:17: error: 'uint64_t' was not declared in this scope
uint64_t invocationCounter;
^
src/GXAPDU.cpp:845:44: error: 'invocationCounter' was not declared in this scope
data, security, suite, invocationCounter)) != 0)
^
src/GXAPDU.cpp:876:9: error: 'uint64_t' was not declared in this scope
uint64_t invocationCounter;
^
src/GXAPDU.cpp:878:79: error: 'invocationCounter' was not declared in this scope
settings.GetCipher()->GetBlockCipherKey(), data, security, suite, invocationCounter)) != 0)
^
src/GXAPDU.cpp:890:22: error: 'class CGXDLMSSettings' has no member named 'GetExpectedInvocationCounter'
if (settings.GetExpectedInvocationCounter() != 0)
^
src/GXAPDU.cpp:892:17: error: 'invocationCounter' was not declared in this scope
if (invocationCounter != settings.GetExpectedInvocationCounter())
^
src/GXAPDU.cpp:892:47: error: 'class CGXDLMSSettings' has no member named 'GetExpectedInvocationCounter'
if (invocationCounter != settings.GetExpectedInvocationCounter())
^
src/GXAPDU.cpp:896:55: error: 'invocationCounter' was not declared in this scope
settings.SetExpectedInvocationCounter(1 + invocationCounter);
^
make: *** [obj/GXAPDU.o] Error 1

Kindly help me in regards with this.

Thanks in advance
Nagendra

Profile picture for user Kurumi

Kurumi

5 years ago

Hi Nagendra,

Hi Nagendra,

uint16_t is not defined. Can you find stdint.h? What distro you are using?

BR,
Mikko

  • Create new account
  • Reset your password

Hire Us!

Latest Releases

  • Mon, 07/27/2026 - 12:37
    gurux.dlms.cpp 9.0.2607.2701
  • Thu, 07/23/2026 - 16:19
    gurux.dlms.java 4.0.96
  • Thu, 07/09/2026 - 14:34
    Gurux.DLMS.Python 1.0.201
  • Fri, 06/26/2026 - 16:32
    Gurux.Service 3.0.2606.2601
  • Wed, 06/24/2026 - 08:36
    Gurux.DLMS.Python 1.0.200

New forum topics

  • Service not known error on gprs communication
  • Help Needed: Interfacing Saral 100 Energy Meter with Microcontroller via RS232
  • Connecting Meter to Agent via serial
  • Reading block profile with Compact array
  • DLMS server - serving multiple similar datasets gathered from multiple meters across distinct logical addresses
More

Who's new

  • DingfanXue
  • UrukTroge
  • Quarryboss
  • CorwXGlcWwyuiJawypxb
  • Vegazone-Casin…
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin