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

4 years 11 months 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

4 years 11 months 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

4 years 11 months 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

  • Tue, 06/09/2026 - 11:16
    gurux.dlms.java 4.0.95
  • Tue, 06/09/2026 - 10:03
    Gurux.DLMS.Python 1.0.199
  • Mon, 06/08/2026 - 13:39
    gurux.dlms.cpp 9.0.2606.0801
  • Mon, 06/01/2026 - 10:15
    gurux.dlms.cpp 9.0.2606.0101
  • Thu, 05/28/2026 - 16:06
    gurux.dlms.java 4.0.94

New forum topics

  • Error reading L&G Meter
  • Pass a TCP Client to GXNet
  • Australian EDMI Mk10D (Essential Energy area)
  • Strange mix of data notificiation vs get response
  • DLMS Connection
More

Who's new

  • Tuanhgg
  • Adel
  • charnon
  • Paddles
  • Miguel Ángel
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin